|
4 | 4 | using Files.App.Helpers.StorageCache;
|
5 | 5 | using Files.App.ViewModels.Previews;
|
6 | 6 | using Files.Core.Services.SizeProvider;
|
7 |
| -using FluentFTP; |
8 | 7 | using LibGit2Sharp;
|
9 | 8 | using Microsoft.Extensions.Logging;
|
10 | 9 | using Microsoft.UI.Xaml.Data;
|
@@ -44,7 +43,7 @@ public sealed class ItemViewModel : ObservableObject, IDisposable
|
44 | 43 | private Task? gitProcessQueueAction;
|
45 | 44 |
|
46 | 45 | // Files and folders list for manipulating
|
47 |
| - private List<ListedItem> filesAndFolders; |
| 46 | + private ConcurrentCollection<ListedItem> filesAndFolders; |
48 | 47 | private readonly IJumpListService jumpListService = Ioc.Default.GetRequiredService<IJumpListService>();
|
49 | 48 | private readonly IDialogService dialogService = Ioc.Default.GetRequiredService<IDialogService>();
|
50 | 49 | private IUserSettingsService UserSettingsService { get; } = Ioc.Default.GetRequiredService<IUserSettingsService>();
|
@@ -386,7 +385,7 @@ public bool AreDirectoriesSortedAlongsideFiles
|
386 | 385 | public ItemViewModel(FolderSettingsViewModel folderSettingsViewModel)
|
387 | 386 | {
|
388 | 387 | folderSettings = folderSettingsViewModel;
|
389 |
| - filesAndFolders = new List<ListedItem>(); |
| 388 | + filesAndFolders = new ConcurrentCollection<ListedItem>(); |
390 | 389 | FilesAndFolders = new BulkConcurrentObservableCollection<ListedItem>();
|
391 | 390 | operationQueue = new ConcurrentQueue<(uint Action, string FileName)>();
|
392 | 391 | gitChangesQueue = new ConcurrentQueue<uint>();
|
@@ -425,18 +424,10 @@ private async void RecycleBinItemDeleted(object sender, FileSystemEventArgs e)
|
425 | 424 | if (!Constants.UserEnvironmentPaths.RecycleBinPath.Equals(CurrentFolder?.ItemPath, StringComparison.OrdinalIgnoreCase))
|
426 | 425 | return;
|
427 | 426 |
|
428 |
| - // Get the item that immediately follows matching item to be removed |
429 |
| - // If the matching item is the last item, try to get the previous item; otherwise, null |
430 |
| - // Case must be ignored since $Recycle.Bin != $RECYCLE.BIN |
431 |
| - var itemRemovedIndex = filesAndFolders.FindIndex(x => x.ItemPath.Equals(e.FullPath, StringComparison.OrdinalIgnoreCase)); |
432 |
| - var nextOfMatchingItem = filesAndFolders.ElementAtOrDefault(itemRemovedIndex + 1 < filesAndFolders.Count ? itemRemovedIndex + 1 : itemRemovedIndex - 1); |
433 | 427 | var removedItem = await RemoveFileOrFolderAsync(e.FullPath);
|
434 | 428 |
|
435 | 429 | if (removedItem is not null)
|
436 | 430 | await ApplySingleFileChangeAsync(removedItem);
|
437 |
| - |
438 |
| - if (nextOfMatchingItem is not null) |
439 |
| - await RequestSelectionAsync(new List<ListedItem>() { nextOfMatchingItem }); |
440 | 431 | }
|
441 | 432 |
|
442 | 433 | private async void RecycleBinItemCreated(object sender, FileSystemEventArgs e)
|
@@ -735,7 +726,7 @@ void OrderEntries()
|
735 | 726 | if (filesAndFolders.Count == 0)
|
736 | 727 | return;
|
737 | 728 |
|
738 |
| - filesAndFolders = SortingHelper.OrderFileList(filesAndFolders, folderSettings.DirectorySortOption, folderSettings.DirectorySortDirection, folderSettings.SortDirectoriesAlongsideFiles).ToList(); |
| 729 | + filesAndFolders = new ConcurrentCollection<ListedItem>(SortingHelper.OrderFileList(filesAndFolders, folderSettings.DirectorySortOption, folderSettings.DirectorySortDirection, folderSettings.SortDirectoriesAlongsideFiles)); |
739 | 730 | }
|
740 | 731 |
|
741 | 732 | if (NativeWinApiHelper.IsHasThreadAccessPropertyPresent && dispatcherQueue.HasThreadAccess)
|
@@ -2362,14 +2353,14 @@ public async Task SearchAsync(FolderSearch search)
|
2362 | 2353 | var results = new List<ListedItem>();
|
2363 | 2354 | search.SearchTick += async (s, e) =>
|
2364 | 2355 | {
|
2365 |
| - filesAndFolders = new List<ListedItem>(results); |
| 2356 | + filesAndFolders = new ConcurrentCollection<ListedItem>(results); |
2366 | 2357 | await OrderFilesAndFoldersAsync();
|
2367 | 2358 | await ApplyFilesAndFoldersChangesAsync();
|
2368 | 2359 | };
|
2369 | 2360 |
|
2370 | 2361 | await search.SearchAsync(results, searchCTS.Token);
|
2371 | 2362 |
|
2372 |
| - filesAndFolders = new List<ListedItem>(results); |
| 2363 | + filesAndFolders = new ConcurrentCollection<ListedItem>(results); |
2373 | 2364 |
|
2374 | 2365 | await OrderFilesAndFoldersAsync();
|
2375 | 2366 | await ApplyFilesAndFoldersChangesAsync();
|
|
0 commit comments