@@ -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