Skip to content

Commit e4892a9

Browse files
authored
Fixed duplicate drives added to the sidebar (#8325)
1 parent 8387974 commit e4892a9

File tree

1 file changed

+19
-26
lines changed

1 file changed

+19
-26
lines changed

src/Files/Filesystem/Drives.cs

Lines changed: 19 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -235,24 +235,22 @@ ex is UnauthorizedAccessException
235235
}
236236

237237
using var thumbnail = (StorageItemThumbnail)await FilesystemTasks.Wrap(() => root.GetThumbnailAsync(ThumbnailMode.SingleItem, 40, ThumbnailOptions.UseCurrentScale).AsTask());
238+
var driveItem = await DriveItem.CreateFromPropertiesAsync(root, deviceId, type, thumbnail);
239+
238240
lock (drivesList)
239241
{
240242
// If drive already in list, skip.
241243
if (drivesList.Any(x => x.DeviceID == deviceId ||
242-
string.IsNullOrEmpty(root.Path) ? x.Path.Contains(root.Name, StringComparison.Ordinal) : x.Path == root.Path))
244+
string.IsNullOrEmpty(root.Path) ? x.Path.Contains(root.Name, StringComparison.OrdinalIgnoreCase) : x.Path == root.Path))
243245
{
244246
return;
245247
}
246-
}
247-
248-
var driveItem = await DriveItem.CreateFromPropertiesAsync(root, deviceId, type, thumbnail);
249-
250-
lock (drivesList)
251-
{
248+
252249
Logger.Info($"Drive added: {driveItem.Path}, {driveItem.Type}");
253250

254251
drivesList.Add(driveItem);
255252
}
253+
256254
// Update the collection on the ui-thread.
257255
DeviceWatcher_EnumerationCompleted(null, null);
258256
}
@@ -291,20 +289,17 @@ private async Task<bool> GetDrivesAsync()
291289
}
292290

293291
using var thumbnail = (StorageItemThumbnail)await FilesystemTasks.Wrap(() => res.Result.GetThumbnailAsync(ThumbnailMode.SingleItem, 40, ThumbnailOptions.UseCurrentScale).AsTask());
292+
var type = GetDriveType(drive);
293+
var driveItem = await DriveItem.CreateFromPropertiesAsync(res.Result, drive.Name.TrimEnd('\\'), type, thumbnail);
294+
294295
lock (drivesList)
295296
{
296297
// If drive already in list, skip.
297298
if (drivesList.Any(x => x.Path == drive.Name))
298299
{
299300
continue;
300301
}
301-
}
302-
303-
var type = GetDriveType(drive);
304-
var driveItem = await DriveItem.CreateFromPropertiesAsync(res.Result, drive.Name.TrimEnd('\\'), type, thumbnail);
305302

306-
lock (drivesList)
307-
{
308303
Logger.Info($"Drive added: {driveItem.Path}, {driveItem.Type}");
309304
drivesList.Add(driveItem);
310305
}
@@ -448,29 +443,27 @@ public async Task HandleWin32DriveEvent(DeviceEvent eventType, string deviceId)
448443
return;
449444
}
450445

446+
DriveItem driveItem;
447+
448+
using (var thumbnail = (StorageItemThumbnail)await FilesystemTasks.Wrap(() => rootAdded.Result.GetThumbnailAsync(ThumbnailMode.SingleItem, 40, ThumbnailOptions.UseCurrentScale).AsTask()))
449+
{
450+
var type = GetDriveType(driveAdded);
451+
driveItem = await DriveItem.CreateFromPropertiesAsync(rootAdded, deviceId, type, thumbnail);
452+
}
453+
451454
lock (drivesList)
452455
{
453456
// If drive already in list, skip.
454457
var matchingDrive = drivesList.FirstOrDefault(x => x.DeviceID == deviceId ||
455-
string.IsNullOrEmpty(rootAdded.Result.Path) ? x.Path.Contains(rootAdded.Result.Name, StringComparison.Ordinal) : x.Path == rootAdded.Result.Path);
458+
string.IsNullOrEmpty(rootAdded.Result.Path) ? x.Path.Contains(rootAdded.Result.Name, StringComparison.OrdinalIgnoreCase) : x.Path == rootAdded.Result.Path);
456459
if (matchingDrive != null)
457460
{
458461
// Update device id to match drive letter
459462
matchingDrive.DeviceID = deviceId;
460463
return;
461464
}
462-
}
463-
464-
using (var thumbnail = (StorageItemThumbnail)await FilesystemTasks.Wrap(() => rootAdded.Result.GetThumbnailAsync(ThumbnailMode.SingleItem, 40, ThumbnailOptions.UseCurrentScale).AsTask()))
465-
{
466-
var type = GetDriveType(driveAdded);
467-
var driveItem = await DriveItem.CreateFromPropertiesAsync(rootAdded, deviceId, type, thumbnail);
468-
469-
lock (drivesList)
470-
{
471-
Logger.Info($"Drive added from fulltrust process: {driveItem.Path}, {driveItem.Type}");
472-
drivesList.Add(driveItem);
473-
}
465+
Logger.Info($"Drive added from fulltrust process: {driveItem.Path}, {driveItem.Type}");
466+
drivesList.Add(driveItem);
474467
}
475468

476469
DeviceWatcher_EnumerationCompleted(null, null);

0 commit comments

Comments
 (0)