From 727f97767233c142df8c7909d726fe03b61a658e Mon Sep 17 00:00:00 2001 From: Koen J Date: Sat, 15 Nov 2025 12:41:22 +0100 Subject: [PATCH] Implemented last queue saving. --- .../futo/platformplayer/states/StatePlayer.kt | 22 +++++++++++++++++++ .../platformplayer/states/StatePlaylists.kt | 1 + 2 files changed, 23 insertions(+) diff --git a/app/src/main/java/com/futo/platformplayer/states/StatePlayer.kt b/app/src/main/java/com/futo/platformplayer/states/StatePlayer.kt index fc4239ae..24b4eed0 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StatePlayer.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StatePlayer.kt @@ -114,6 +114,12 @@ class StatePlayer { var currentVideo: IPlatformVideo? = null private set; + init { + onQueueChanged.subscribe { + updateLastQueue() + } + } + fun setCurrentlyPlaying(video: IPlatformVideo?) { currentVideo = video; } @@ -384,6 +390,22 @@ class StatePlayer { setQueuePosition(video); } } + + fun updateLastQueue() { + val queueVideos = synchronized(_queue) { + if (!_queue.isEmpty()) { + return@synchronized _queue.map { SerializedPlatformVideo.fromVideo(it) }.toList() + } + + return@synchronized null + } + + if (queueVideos != null) { + val playlist = Playlist("Last Queue", queueVideos); + playlist.id = StatePlaylists.LAST_QUEUE_PLAYLIST_ID + StatePlaylists.instance.createOrUpdatePlaylist(playlist, isUserInteraction = false) + } + } fun setQueuePosition(video: IPlatformVideo) { synchronized(_queue) { if (getCurrentQueueItem() == video) { 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 cbe1c518..ab7159d9 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StatePlaylists.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StatePlaylists.kt @@ -394,6 +394,7 @@ class StatePlaylists { companion object { val TAG = "StatePlaylists"; + val LAST_QUEUE_PLAYLIST_ID = "a70a3287-45dd-4227-832c-6ecde7fb1bf6" private var _instance : StatePlaylists? = null; private var _lockObject = Object() val instance : StatePlaylists