@@ -1214,34 +1214,28 @@ private async Task HandleTagItemDragOverAsync(FileTagItem tagItem, ItemDragOverE
12141214
12151215 args.RawEvent.Handled = true;
12161216
1217- // Comment out the code for dropping to Tags section as it is currently not supported.
1218-
1219- //var storageItems = await Utils.Storage.FilesystemHelpers.GetDraggedStorageItems(args.DroppedItem);
1220-
1221- //if (!storageItems.Any())
1222- //{
1223- args.RawEvent.AcceptedOperation = DataPackageOperation.None;
1224- //}
1225- //else
1226- //{
1227- // args.RawEvent.DragUIOverride.IsCaptionVisible = true;
1228- // args.RawEvent.DragUIOverride.Caption = string.Format("LinkToFolderCaptionText".GetLocalizedResource(), tagItem.Text);
1229- // args.RawEvent.AcceptedOperation = DataPackageOperation.Link;
1230- //}
1231- }
1217+ var storageItems = await Utils.Storage.FilesystemHelpers.GetDraggedStorageItems(args.DroppedItem);
12321218
1219+ if (!storageItems.Any(x => !string.IsNullOrEmpty(x.Path)))
1220+ {
1221+ args.RawEvent.AcceptedOperation = DataPackageOperation.None;
1222+ }
1223+ else
1224+ {
1225+ args.RawEvent.DragUIOverride.IsCaptionVisible = true;
1226+ args.RawEvent.DragUIOverride.Caption = string.Format("LinkToFolderCaptionText".GetLocalizedResource(), tagItem.Text);
1227+ args.RawEvent.AcceptedOperation = DataPackageOperation.Link;
1228+ }
1229+ }
12331230
12341231 public async Task HandleItemDroppedAsync(ItemDroppedEventArgs args)
12351232 {
12361233 if (args.DropTarget is LocationItem locationItem)
12371234 await HandleLocationItemDroppedAsync(locationItem, args);
12381235 else if (args.DropTarget is DriveItem driveItem)
12391236 await HandleDriveItemDroppedAsync(driveItem, args);
1240-
1241- // Comment out the code for dropping to Tags section as it is currently not supported.
1242-
1243- //else if (args.DropTarget is FileTagItem fileTagItem)
1244- // await HandleTagItemDroppedAsync(fileTagItem, args);
1237+ else if (args.DropTarget is FileTagItem fileTagItem)
1238+ await HandleTagItemDroppedAsync(fileTagItem, args);
12451239 }
12461240
12471241 private async Task HandleLocationItemDroppedAsync(LocationItem locationItem, ItemDroppedEventArgs args)
@@ -1269,18 +1263,20 @@ private Task<ReturnResult> HandleDriveItemDroppedAsync(DriveItem driveItem, Item
12691263 return FilesystemHelpers.PerformOperationTypeAsync(args.RawEvent.AcceptedOperation, args.RawEvent.DataView, driveItem.Path, false, true);
12701264 }
12711265
1272- // TODO: This method effectively does nothing. We need to implement the functionality for dropping to Tags section.
12731266 private async Task HandleTagItemDroppedAsync(FileTagItem fileTagItem, ItemDroppedEventArgs args)
12741267 {
12751268 var storageItems = await Utils.Storage.FilesystemHelpers.GetDraggedStorageItems(args.DroppedItem);
1269+ var dbInstance = FileTagsHelper.GetDbInstance();
12761270 foreach (var item in storageItems.Where(x => !string.IsNullOrEmpty(x.Path)))
12771271 {
1278- var listedItem = new ListedItem(null)
1272+ var filesTags = FileTagsHelper.ReadFileTag(item.Path);
1273+ if (!filesTags.Contains(fileTagItem.FileTag.Uid))
12791274 {
1280- ItemPath = item.Path,
1281- FileFRN = await FileTagsHelper.GetFileFRN(item.Item),
1282- FileTags = [fileTagItem.FileTag.Uid]
1283- };
1275+ filesTags = [.. filesTags, fileTagItem.FileTag.Uid];
1276+ var fileFRN = await FileTagsHelper.GetFileFRN(item.Item);
1277+ dbInstance.SetTags(item.Path, fileFRN, filesTags);
1278+ FileTagsHelper.WriteFileTag(item.Path, filesTags);
1279+ }
12841280 }
12851281 }
12861282
0 commit comments