From ee38c36647dd273ac6fe15ccbfebf25403e0e327 Mon Sep 17 00:00:00 2001 From: Drew Weymouth Date: Sun, 23 Jun 2024 08:22:52 -0700 Subject: [PATCH] fix bugs with reordering playlist tracks multiple times --- ui/browsing/playlistpage.go | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/ui/browsing/playlistpage.go b/ui/browsing/playlistpage.go index 11cd277..58f7f13 100644 --- a/ui/browsing/playlistpage.go +++ b/ui/browsing/playlistpage.go @@ -190,16 +190,20 @@ func (a *PlaylistPage) doSetNewTrackOrder(ids []string, newPos int) { } } newTracks := sharedutil.ReorderItems(a.tracks, idxs, newPos) - ids = sharedutil.TracksToIDs(newTracks) - if err := a.sm.Server.ReplacePlaylistTracks(a.playlistID, ids); err != nil { - log.Printf("error updating playlist: %s", err.Error()) - } else { - renumberTracks(newTracks) - // force-switch back to unsorted view to show new track order - a.tracklist.SetSorting(widgets.TracklistSort{}) - a.tracklist.SetTracks(newTracks) - a.tracklist.UnselectAll() - } + // we can't block the UI waiting for the server so assume it will succeed + go func() { + ids = sharedutil.TracksToIDs(newTracks) + if err := a.sm.Server.ReplacePlaylistTracks(a.playlistID, ids); err != nil { + log.Printf("error updating playlist: %s", err.Error()) + } + }() + + renumberTracks(newTracks) + // force-switch back to unsorted view to show new track order + a.tracklist.SetSorting(widgets.TracklistSort{}) + a.tracklist.SetTracks(newTracks) + a.tracklist.UnselectAll() + a.tracks = newTracks } func (a *PlaylistPage) onRemoveSelectedFromPlaylist() {