From 08bbb839aa4d1503a230c77992eaa7b9964313df Mon Sep 17 00:00:00 2001 From: Bnyro Date: Wed, 23 Nov 2022 18:20:43 +0100 Subject: [PATCH] add possibility to backup and restore local playlists --- .../com/github/libretube/db/obj/LocalPlaylistItem.kt | 2 +- app/src/main/java/com/github/libretube/obj/BackupFile.kt | 2 ++ .../java/com/github/libretube/ui/dialogs/BackupDialog.kt | 5 +++++ .../main/java/com/github/libretube/util/BackupHelper.kt | 9 +++++++++ app/src/main/res/values/strings.xml | 1 + 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/github/libretube/db/obj/LocalPlaylistItem.kt b/app/src/main/java/com/github/libretube/db/obj/LocalPlaylistItem.kt index ad3be4f2c..65d9dc134 100644 --- a/app/src/main/java/com/github/libretube/db/obj/LocalPlaylistItem.kt +++ b/app/src/main/java/com/github/libretube/db/obj/LocalPlaylistItem.kt @@ -7,7 +7,7 @@ import androidx.room.PrimaryKey @Entity data class LocalPlaylistItem( @PrimaryKey(autoGenerate = true) val id: Int = 0, - @ColumnInfo val playlistId: Int, + @ColumnInfo var playlistId: Int, @ColumnInfo val videoId: String, @ColumnInfo val title: String? = null, @ColumnInfo val uploadDate: String? = null, diff --git a/app/src/main/java/com/github/libretube/obj/BackupFile.kt b/app/src/main/java/com/github/libretube/obj/BackupFile.kt index 260c7884f..82e8a75ec 100644 --- a/app/src/main/java/com/github/libretube/obj/BackupFile.kt +++ b/app/src/main/java/com/github/libretube/obj/BackupFile.kt @@ -1,6 +1,7 @@ package com.github.libretube.obj import com.github.libretube.db.obj.CustomInstance +import com.github.libretube.db.obj.LocalPlaylistWithVideos import com.github.libretube.db.obj.LocalSubscription import com.github.libretube.db.obj.PlaylistBookmark import com.github.libretube.db.obj.SearchHistoryItem @@ -14,5 +15,6 @@ data class BackupFile( var localSubscriptions: List? = null, var customInstances: List? = null, var playlistBookmarks: List? = null, + var localPlaylists: List? = null, var preferences: List? = null ) diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/BackupDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/BackupDialog.kt index 710e26f12..128cb3f36 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/BackupDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/BackupDialog.kt @@ -40,6 +40,10 @@ class BackupDialog( it.playlistBookmarks = Database.playlistBookmarkDao().getAll() }) + object LocalPlaylists : BackupOption(R.string.local_playlists, onSelected = { + it.localPlaylists = Database.localPlaylistsDao().getAll() + }) + object Preferences : BackupOption(R.string.preferences, onSelected = { it.preferences = PreferenceHelper.settings.all.map { PreferenceItem(it.key, it.value) @@ -54,6 +58,7 @@ class BackupDialog( BackupOption.LocalSubscriptions, BackupOption.CustomInstances, BackupOption.PlaylistBookmarks, + BackupOption.LocalPlaylists, BackupOption.Preferences ) diff --git a/app/src/main/java/com/github/libretube/util/BackupHelper.kt b/app/src/main/java/com/github/libretube/util/BackupHelper.kt index 721bf53fe..bf9a8c2c4 100644 --- a/app/src/main/java/com/github/libretube/util/BackupHelper.kt +++ b/app/src/main/java/com/github/libretube/util/BackupHelper.kt @@ -66,6 +66,15 @@ class BackupHelper(private val context: Context) { *backupFile.playlistBookmarks.orEmpty().toTypedArray() ) + backupFile.localPlaylists?.forEach { + Database.localPlaylistsDao().createPlaylist(it.playlist) + val playlistId = Database.localPlaylistsDao().getAll().last().playlist.id + it.videos.forEach { + it.playlistId = playlistId + Database.localPlaylistsDao().addPlaylistVideo(it) + } + } + restorePreferences(backupFile.preferences) } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 28a2ec578..f1a232ebe 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -386,6 +386,7 @@ Clear bookmarks No bookmarks yet! Insert related videos + Local playlists Download Service