From 18ffa5e11ab7924b5a85266f7ad1c3328e2720bb Mon Sep 17 00:00:00 2001 From: jeffvli Date: Mon, 10 Nov 2025 20:45:49 -0800 Subject: [PATCH] add drop operations for all item types --- .../helpers/item-list-reducer-utils.ts | 6 ++- .../item-table-list-column.tsx | 54 ++++++++++++++++--- 2 files changed, 53 insertions(+), 7 deletions(-) diff --git a/src/renderer/components/item-list/helpers/item-list-reducer-utils.ts b/src/renderer/components/item-list/helpers/item-list-reducer-utils.ts index 45ce8c598..ee1cafa1c 100644 --- a/src/renderer/components/item-list/helpers/item-list-reducer-utils.ts +++ b/src/renderer/components/item-list/helpers/item-list-reducer-utils.ts @@ -1,4 +1,8 @@ -import { ItemListAction, ItemListState, ItemListStateItemWithRequiredProperties } from './item-list-state'; +import { + ItemListAction, + ItemListState, + ItemListStateItemWithRequiredProperties, +} from './item-list-state'; /** * Action creators for item grid state management diff --git a/src/renderer/components/item-list/item-table-list/item-table-list-column.tsx b/src/renderer/components/item-list/item-table-list/item-table-list-column.tsx index 5cb66b0cf..4d1b4d6f7 100644 --- a/src/renderer/components/item-list/item-table-list/item-table-list-column.tsx +++ b/src/renderer/components/item-list/item-table-list/item-table-list-column.tsx @@ -35,7 +35,7 @@ import { useDragDrop } from '/@/renderer/hooks/use-drag-drop'; import { Icon } from '/@/shared/components/icon/icon'; import { Skeleton } from '/@/shared/components/skeleton/skeleton'; import { Text } from '/@/shared/components/text/text'; -import { LibraryItem } from '/@/shared/types/domain-types'; +import { LibraryItem, QueueSong, Song } from '/@/shared/types/domain-types'; import { DragOperation, DragTarget, DragTargetMap } from '/@/shared/types/drag-and-drop'; import { TableColumn } from '/@/shared/types/types'; @@ -81,8 +81,6 @@ export const ItemTableListColumn = (props: ItemTableListColumn) => { const draggedItems = getDraggedItems(item as any, props.internalState); - console.log('getItem', draggedItems); - return draggedItems; }, itemType: props.itemType, @@ -151,24 +149,64 @@ export const ItemTableListColumn = (props: ItemTableListColumn) => { break; } case DragTarget.ALBUM_ARTIST: { + props.playerContext.addToQueueByFetch( + sourceServerId, + args.source.id, + sourceItemType, + { edge: args.edge, uniqueId: droppedOnUniqueId }, + ); break; } case DragTarget.ARTIST: { + props.playerContext.addToQueueByFetch( + sourceServerId, + args.source.id, + sourceItemType, + { edge: args.edge, uniqueId: droppedOnUniqueId }, + ); break; } case DragTarget.GENRE: { + props.playerContext.addToQueueByFetch( + sourceServerId, + args.source.id, + sourceItemType, + { edge: args.edge, uniqueId: droppedOnUniqueId }, + ); break; } case DragTarget.PLAYLIST: { + props.playerContext.addToQueueByFetch( + sourceServerId, + args.source.id, + sourceItemType, + { edge: args.edge, uniqueId: droppedOnUniqueId }, + ); break; } case DragTarget.QUEUE_SONG: { + const sourceItems = (args.source.item || []) as QueueSong[]; + if ( + sourceItems.length > 0 && + args.edge && + (args.edge === 'top' || args.edge === 'bottom') + ) { + props.playerContext.moveSelectedTo( + sourceItems, + args.edge, + droppedOnUniqueId, + ); + } break; } case DragTarget.SONG: { - break; - } - case DragTarget.TABLE_COLUMN: { + const sourceItems = (args.source.item || []) as Song[]; + if (sourceItems.length > 0) { + props.playerContext.addToQueueByData(sourceItems, { + edge: args.edge, + uniqueId: droppedOnUniqueId, + }); + } break; } default: { @@ -177,6 +215,10 @@ export const ItemTableListColumn = (props: ItemTableListColumn) => { } } + if (props.internalState) { + props.internalState.setDragging([]); + } + return; }, },