add drop operations for all item types

This commit is contained in:
jeffvli
2025-11-10 20:45:49 -08:00
parent 8ffb65e894
commit 18ffa5e11a
2 changed files with 53 additions and 7 deletions
@@ -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 * Action creators for item grid state management
@@ -35,7 +35,7 @@ import { useDragDrop } from '/@/renderer/hooks/use-drag-drop';
import { Icon } from '/@/shared/components/icon/icon'; import { Icon } from '/@/shared/components/icon/icon';
import { Skeleton } from '/@/shared/components/skeleton/skeleton'; import { Skeleton } from '/@/shared/components/skeleton/skeleton';
import { Text } from '/@/shared/components/text/text'; 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 { DragOperation, DragTarget, DragTargetMap } from '/@/shared/types/drag-and-drop';
import { TableColumn } from '/@/shared/types/types'; import { TableColumn } from '/@/shared/types/types';
@@ -81,8 +81,6 @@ export const ItemTableListColumn = (props: ItemTableListColumn) => {
const draggedItems = getDraggedItems(item as any, props.internalState); const draggedItems = getDraggedItems(item as any, props.internalState);
console.log('getItem', draggedItems);
return draggedItems; return draggedItems;
}, },
itemType: props.itemType, itemType: props.itemType,
@@ -151,24 +149,64 @@ export const ItemTableListColumn = (props: ItemTableListColumn) => {
break; break;
} }
case DragTarget.ALBUM_ARTIST: { case DragTarget.ALBUM_ARTIST: {
props.playerContext.addToQueueByFetch(
sourceServerId,
args.source.id,
sourceItemType,
{ edge: args.edge, uniqueId: droppedOnUniqueId },
);
break; break;
} }
case DragTarget.ARTIST: { case DragTarget.ARTIST: {
props.playerContext.addToQueueByFetch(
sourceServerId,
args.source.id,
sourceItemType,
{ edge: args.edge, uniqueId: droppedOnUniqueId },
);
break; break;
} }
case DragTarget.GENRE: { case DragTarget.GENRE: {
props.playerContext.addToQueueByFetch(
sourceServerId,
args.source.id,
sourceItemType,
{ edge: args.edge, uniqueId: droppedOnUniqueId },
);
break; break;
} }
case DragTarget.PLAYLIST: { case DragTarget.PLAYLIST: {
props.playerContext.addToQueueByFetch(
sourceServerId,
args.source.id,
sourceItemType,
{ edge: args.edge, uniqueId: droppedOnUniqueId },
);
break; break;
} }
case DragTarget.QUEUE_SONG: { 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; break;
} }
case DragTarget.SONG: { case DragTarget.SONG: {
break; const sourceItems = (args.source.item || []) as Song[];
} if (sourceItems.length > 0) {
case DragTarget.TABLE_COLUMN: { props.playerContext.addToQueueByData(sourceItems, {
edge: args.edge,
uniqueId: droppedOnUniqueId,
});
}
break; break;
} }
default: { default: {
@@ -177,6 +215,10 @@ export const ItemTableListColumn = (props: ItemTableListColumn) => {
} }
} }
if (props.internalState) {
props.internalState.setDragging([]);
}
return; return;
}, },
}, },