From 53ebd3363f5270ffc3508c0ca22a4c8d5f97da27 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Thu, 1 Dec 2022 15:17:46 +0100 Subject: [PATCH] use the new route --- .../github/libretube/api/PlaylistsHelper.kt | 51 ++++++++++--------- .../github/libretube/api/obj/PlaylistId.kt | 1 + .../libretube/workers/NotificationWorker.kt | 1 - 3 files changed, 28 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/github/libretube/api/PlaylistsHelper.kt b/app/src/main/java/com/github/libretube/api/PlaylistsHelper.kt index 1ab307f4f..736e83594 100644 --- a/app/src/main/java/com/github/libretube/api/PlaylistsHelper.kt +++ b/app/src/main/java/com/github/libretube/api/PlaylistsHelper.kt @@ -107,23 +107,26 @@ object PlaylistsHelper { return null } - suspend fun addToPlaylist(playlistId: String, videoId: String): Boolean { + suspend fun addToPlaylist(playlistId: String, vararg videoIds: String): Boolean { if (!loggedIn()) { - val localPlaylistItem = RetrofitInstance.api.getStreams(videoId).toLocalPlaylistItem(playlistId, videoId) - awaitQuery { - // avoid duplicated videos in a playlist - DatabaseHolder.Database.localPlaylistsDao().deletePlaylistItemsByVideoId(playlistId, videoId) + val localPlaylist = DatabaseHolder.Database.localPlaylistsDao().getAll() + .first { it.playlist.id.toString() == playlistId } - // add the new video to the database - DatabaseHolder.Database.localPlaylistsDao().addPlaylistVideo(localPlaylistItem) - val localPlaylist = DatabaseHolder.Database.localPlaylistsDao().getAll() - .first { it.playlist.id.toString() == playlistId } + for (videoId in videoIds) { + val localPlaylistItem = RetrofitInstance.api.getStreams(videoId).toLocalPlaylistItem(playlistId, videoId) + awaitQuery { + // avoid duplicated videos in a playlist + DatabaseHolder.Database.localPlaylistsDao().deletePlaylistItemsByVideoId(playlistId, videoId) - if (localPlaylist.playlist.thumbnailUrl == "") { - // set the new playlist thumbnail URL - localPlaylistItem.thumbnailUrl?.let { - localPlaylist.playlist.thumbnailUrl = it - DatabaseHolder.Database.localPlaylistsDao().updatePlaylist(localPlaylist.playlist) + // add the new video to the database + DatabaseHolder.Database.localPlaylistsDao().addPlaylistVideo(localPlaylistItem) + + if (localPlaylist.playlist.thumbnailUrl == "") { + // set the new playlist thumbnail URL + localPlaylistItem.thumbnailUrl?.let { + localPlaylist.playlist.thumbnailUrl = it + DatabaseHolder.Database.localPlaylistsDao().updatePlaylist(localPlaylist.playlist) + } } } } @@ -132,7 +135,10 @@ object PlaylistsHelper { return RetrofitInstance.authApi.addToPlaylist( token, - PlaylistId(playlistId, videoId) + PlaylistId( + playlistId = playlistId, + videoIds = videoIds.toList() + ) ).message == "ok" } @@ -185,16 +191,13 @@ object PlaylistsHelper { suspend fun importPlaylists(appContext: Context, playlists: List) { for (playlist in playlists) { - Log.e("playlist", playlist.toString()) val playlistId = createPlaylist(playlist.name!!, appContext) ?: continue - runBlocking { - val tasks = playlist.videos.map { videoId -> - async { addToPlaylist(playlistId, videoId.substringAfter("=")) } - } - tasks.forEach { - it.await() - } - } + addToPlaylist( + playlistId, + *playlist.videos.map { + it.substringAfter("=") + }.toTypedArray() + ) } } diff --git a/app/src/main/java/com/github/libretube/api/obj/PlaylistId.kt b/app/src/main/java/com/github/libretube/api/obj/PlaylistId.kt index 088a105c2..ea10202a4 100644 --- a/app/src/main/java/com/github/libretube/api/obj/PlaylistId.kt +++ b/app/src/main/java/com/github/libretube/api/obj/PlaylistId.kt @@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties data class PlaylistId( var playlistId: String? = null, var videoId: String? = null, + var videoIds: List? = null, var newName: String? = null, var index: Int = -1 ) diff --git a/app/src/main/java/com/github/libretube/workers/NotificationWorker.kt b/app/src/main/java/com/github/libretube/workers/NotificationWorker.kt index d1fb9e742..44021adee 100644 --- a/app/src/main/java/com/github/libretube/workers/NotificationWorker.kt +++ b/app/src/main/java/com/github/libretube/workers/NotificationWorker.kt @@ -17,7 +17,6 @@ import com.github.libretube.extensions.toID import com.github.libretube.ui.activities.MainActivity import com.github.libretube.ui.views.TimePickerPreference import com.github.libretube.util.PreferenceHelper -import kotlinx.coroutines.async import kotlinx.coroutines.runBlocking import java.time.LocalTime