diff --git a/packages/frontend/src/App.tsx b/packages/frontend/src/App.tsx index caf677e..fd6cffa 100644 --- a/packages/frontend/src/App.tsx +++ b/packages/frontend/src/App.tsx @@ -652,13 +652,11 @@ const RekordboxReader: React.FC = () => { searchQuery={searchQuery} isSwitchingPlaylist={isSwitchingPlaylist} onPlaySong={handlePlaySong} - onReorder={async (orderedIds: string[]) => { - if (!currentPlaylist || currentPlaylist === 'All Songs') return; - // Persist order in backend - await api.reorderPlaylist(currentPlaylist, orderedIds); - // Refresh the current playlist view - refresh(); - }} + onReorder={async (_orderedIds: string[]) => { + if (!currentPlaylist || currentPlaylist === 'All Songs') return; + // Do not overwrite server's move result with stale order; just refresh + refresh(); + }} /> diff --git a/packages/frontend/src/components/PaginatedSongList.tsx b/packages/frontend/src/components/PaginatedSongList.tsx index fc96086..1d2b399 100644 --- a/packages/frontend/src/components/PaginatedSongList.tsx +++ b/packages/frontend/src/components/PaginatedSongList.tsx @@ -309,6 +309,9 @@ export const PaginatedSongList: React.FC = memo(({ if (!currentPlaylist || selectedSongs.size > 0) return; e.dataTransfer.setData('text/song-id', song.id); console.debug('[Reorder] drag start', { id: song.id, index }); + // Explicitly set effect to move for better UX + try { e.dataTransfer.effectAllowed = 'move'; } catch {} + try { e.dataTransfer.dropEffect = 'move'; } catch {} }} /> ));