From 527bbfe43f26b00814f21c8a024f1394636b0f3c Mon Sep 17 00:00:00 2001 From: Kelvin Date: Mon, 9 Sep 2024 23:07:15 +0200 Subject: [PATCH] Fix watchlater re-downloading every time videos are reordered --- .../futo/platformplayer/states/StatePlaylists.kt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/futo/platformplayer/states/StatePlaylists.kt b/app/src/main/java/com/futo/platformplayer/states/StatePlaylists.kt index 41de7c3c..d5f53af4 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StatePlaylists.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StatePlaylists.kt @@ -61,8 +61,17 @@ class StatePlaylists { } fun updateWatchLater(updated: List) { synchronized(_watchlistStore) { - _watchlistStore.deleteAll(); - _watchlistStore.saveAllAsync(updated); + //_watchlistStore.deleteAll(); + val existing = _watchlistStore.getItems(); + val toAdd = updated.filter { u -> !existing.any { u.url == it.url } }; + val toRemove = existing.filter { u -> !updated.any { u.url == it.url } }; + Logger.i(TAG, "WatchLater changed:\nTo Add:\n" + + (if(toAdd.size == 0) "None" else toAdd.map { " + " + it.name }.joinToString("\n")) + + "\nTo Remove:\n" + + (if(toRemove.size == 0) "None" else toRemove.map { " - " + it.name }.joinToString("\n"))); + for(remove in toRemove) + _watchlistStore.delete(remove); + _watchlistStore.saveAllAsync(toAdd); _watchlistOrderStore.set(*updated.map { it.url }.toTypedArray()); _watchlistOrderStore.save(); }