fix(reorder): stop overwriting server move with stale client order; just refresh after move; improve dnd effectAllowed/dropEffect

This commit is contained in:
Geert Rademakes 2025-08-08 14:47:20 +02:00
parent e2d6d55433
commit 2d42c6da71
2 changed files with 8 additions and 7 deletions

View File

@ -652,11 +652,9 @@ const RekordboxReader: React.FC = () => {
searchQuery={searchQuery}
isSwitchingPlaylist={isSwitchingPlaylist}
onPlaySong={handlePlaySong}
onReorder={async (orderedIds: string[]) => {
onReorder={async (_orderedIds: string[]) => {
if (!currentPlaylist || currentPlaylist === 'All Songs') return;
// Persist order in backend
await api.reorderPlaylist(currentPlaylist, orderedIds);
// Refresh the current playlist view
// Do not overwrite server's move result with stale order; just refresh
refresh();
}}
/>

View File

@ -309,6 +309,9 @@ export const PaginatedSongList: React.FC<PaginatedSongListProps> = 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 {}
}}
/>
));