From 73321ee362e772200872fae43e50365efdfbc83d Mon Sep 17 00:00:00 2001 From: Kelvin Date: Tue, 17 Oct 2023 21:23:02 +0200 Subject: [PATCH] Allow import/restore playlist with missing sources --- .../java/com/futo/platformplayer/activities/MainActivity.kt | 1 + .../java/com/futo/platformplayer/states/StatePlaylists.kt | 6 ++++++ .../java/com/futo/platformplayer/stores/v2/ManagedStore.kt | 1 + 3 files changed, 8 insertions(+) diff --git a/app/src/main/java/com/futo/platformplayer/activities/MainActivity.kt b/app/src/main/java/com/futo/platformplayer/activities/MainActivity.kt index e0ac6fc1..13982583 100644 --- a/app/src/main/java/com/futo/platformplayer/activities/MainActivity.kt +++ b/app/src/main/java/com/futo/platformplayer/activities/MainActivity.kt @@ -607,6 +607,7 @@ class MainActivity : AppCompatActivity, IWithResultLauncher { return; }; }; + val name = when(type) { "Playlist" -> recon.split("\n").filter { !it.startsWith(ManagedStore.RECONSTRUCTION_HEADER_OPERATOR) }.firstOrNull() ?: type; else -> type 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 ad1d2862..73ef434e 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StatePlaylists.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StatePlaylists.kt @@ -5,6 +5,7 @@ import android.net.Uri import androidx.core.content.FileProvider import com.futo.platformplayer.R import com.futo.platformplayer.api.media.PlatformID +import com.futo.platformplayer.api.media.exceptions.NoPlatformClientException import com.futo.platformplayer.api.media.models.channels.IPlatformChannel import com.futo.platformplayer.api.media.models.contents.IPlatformContent import com.futo.platformplayer.api.media.models.video.IPlatformVideo @@ -265,6 +266,11 @@ class StatePlaylists { builder.messages.add("${name}:[${it}] is no longer available"); return@map null; } + catch(ex: NoPlatformClientException) { + //TODO: Propagate this to dialog, and then back, allowing users to enable plugins... + builder.messages.add("No source enabled for [${it}]"); + return@map null; + } catch(ex: Throwable) { throw ReconstructionException(name, "${name}:[${it}] ${ex.message}", ex); } diff --git a/app/src/main/java/com/futo/platformplayer/stores/v2/ManagedStore.kt b/app/src/main/java/com/futo/platformplayer/stores/v2/ManagedStore.kt index a34aa49d..a76af3a7 100644 --- a/app/src/main/java/com/futo/platformplayer/stores/v2/ManagedStore.kt +++ b/app/src/main/java/com/futo/platformplayer/stores/v2/ManagedStore.kt @@ -118,6 +118,7 @@ class ManagedStore{ val builder = ReconstructStore.Builder(); for (recon in items) { + onProgress?.invoke(0, total); //Retry once for (i in 0 .. 1) { try {