From 102e2c54bb86ad7b0a500911846e92aa810999b9 Mon Sep 17 00:00:00 2001 From: Kelvin Date: Fri, 22 Nov 2024 21:51:06 +0100 Subject: [PATCH] Working watchlater sync --- .../com/futo/platformplayer/UISlideOverlays.kt | 4 ++-- .../fragment/mainactivity/main/ChannelFragment.kt | 6 +----- .../fragment/mainactivity/main/ContentFeedView.kt | 2 +- .../fragment/mainactivity/main/VideoDetailView.kt | 2 +- .../mainactivity/main/WatchLaterFragment.kt | 2 +- .../futo/platformplayer/states/StatePlaylists.kt | 14 +++++++++----- .../platformplayer/sync/internal/SyncSession.kt | 6 ++++-- 7 files changed, 19 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/futo/platformplayer/UISlideOverlays.kt b/app/src/main/java/com/futo/platformplayer/UISlideOverlays.kt index be7a5e78..2a930734 100644 --- a/app/src/main/java/com/futo/platformplayer/UISlideOverlays.kt +++ b/app/src/main/java/com/futo/platformplayer/UISlideOverlays.kt @@ -959,7 +959,7 @@ class UISlideOverlays { "${container.context.getString(R.string.add_to)} " + StatePlayer.TYPE_WATCHLATER + "", "${watchLater.size} " + container.context.getString(R.string.videos), tag = "watch later", - call = { StatePlaylists.instance.addToWatchLater(SerializedPlatformVideo.fromVideo(video)); }), + call = { StatePlaylists.instance.addToWatchLater(SerializedPlatformVideo.fromVideo(video), true); }), SlideUpMenuItem(container.context, R.drawable.ic_history, container.context.getString(R.string.add_to_history), @@ -1040,7 +1040,7 @@ class UISlideOverlays { StatePlayer.TYPE_WATCHLATER, "${watchLater.size} " + container.context.getString(R.string.videos), tag = "watch later", - call = { StatePlaylists.instance.addToWatchLater(SerializedPlatformVideo.fromVideo(video)); }), + call = { StatePlaylists.instance.addToWatchLater(SerializedPlatformVideo.fromVideo(video), true); }), ) ); diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ChannelFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ChannelFragment.kt index 260c5a54..307d1ace 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ChannelFragment.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ChannelFragment.kt @@ -237,11 +237,7 @@ class ChannelFragment : MainFragment() { } adapter.onAddToWatchLaterClicked.subscribe { content -> if (content is IPlatformVideo) { - StatePlaylists.instance.addToWatchLater( - SerializedPlatformVideo.fromVideo( - content - ) - ) + StatePlaylists.instance.addToWatchLater(SerializedPlatformVideo.fromVideo(content), true) UIDialogs.toast("Added to watch later\n[${content.name}]") } } diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ContentFeedView.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ContentFeedView.kt index 1a4537f6..908730fe 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ContentFeedView.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ContentFeedView.kt @@ -89,7 +89,7 @@ abstract class ContentFeedView : FeedView) { + fun updateWatchLaterOrdering(order: List, notify: Boolean = false) { _watchlistOrderStore.set(*smartMerge(order, getWatchLaterOrdering()).toTypedArray()); _watchlistOrderStore.save(); + if(notify) { + onWatchLaterChanged.emit(); + } } fun toMigrateCheck(): List> { @@ -245,8 +249,8 @@ class StatePlaylists { StateApp.instance.scopeOrNull?.launch(Dispatchers.IO) { StateSync.instance.broadcastJsonData(GJSyncOpcodes.syncWatchLater, SyncWatchLaterPackage( listOf(), - mapOf(Pair(url, time.toEpochSecond())), - mapOf() + mapOf(), + mapOf(Pair(url, time.toEpochSecond())) )) }; } diff --git a/app/src/main/java/com/futo/platformplayer/sync/internal/SyncSession.kt b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncSession.kt index f4ad14eb..0fb69734 100644 --- a/app/src/main/java/com/futo/platformplayer/sync/internal/SyncSession.kt +++ b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncSession.kt @@ -330,8 +330,10 @@ class SyncSession : IAuthorizable { } val packReorderTime = OffsetDateTime.ofInstant(Instant.ofEpochSecond(pack.reorderTime), ZoneOffset.UTC); - if(StatePlaylists.instance.getWatchLaterLastReorderTime() < packReorderTime && pack.ordering != null) - StatePlaylists.instance.updateWatchLaterOrdering(smartMerge(pack.ordering!!, StatePlaylists.instance.getWatchLaterOrdering())); + val localReorderTime = StatePlaylists.instance.getWatchLaterLastReorderTime(); + if(localReorderTime < packReorderTime && pack.ordering != null) { + StatePlaylists.instance.updateWatchLaterOrdering(smartMerge(pack.ordering!!, StatePlaylists.instance.getWatchLaterOrdering()), true); + } } GJSyncOpcodes.syncHistory -> {