From 28b11e22eb5892765c25f77e23608c8823749043 Mon Sep 17 00:00:00 2001 From: Samfun75 <38332931+Samfun75@users.noreply.github.com> Date: Thu, 2 Mar 2023 15:30:58 +0300 Subject: [PATCH] Yomiroll: Fix crash when using new pref (#1353) UHDMovies: add blank check --- src/all/kamyroll/build.gradle | 2 +- .../all/kamyroll/AccessTokenInterceptor.kt | 2 +- .../animeextension/all/kamyroll/Yomiroll.kt | 53 +++++++++---------- src/en/uhdmovies/build.gradle | 2 +- .../animeextension/en/uhdmovies/UHDMovies.kt | 2 +- 5 files changed, 30 insertions(+), 31 deletions(-) diff --git a/src/all/kamyroll/build.gradle b/src/all/kamyroll/build.gradle index 990067d1f..2d871e31e 100644 --- a/src/all/kamyroll/build.gradle +++ b/src/all/kamyroll/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'Yomiroll' pkgNameSuffix = 'all.kamyroll' extClass = '.Yomiroll' - extVersionCode = 17 + extVersionCode = 18 libVersion = '13' } diff --git a/src/all/kamyroll/src/eu/kanade/tachiyomi/animeextension/all/kamyroll/AccessTokenInterceptor.kt b/src/all/kamyroll/src/eu/kanade/tachiyomi/animeextension/all/kamyroll/AccessTokenInterceptor.kt index 6d5567c7c..cd20c4947 100644 --- a/src/all/kamyroll/src/eu/kanade/tachiyomi/animeextension/all/kamyroll/AccessTokenInterceptor.kt +++ b/src/all/kamyroll/src/eu/kanade/tachiyomi/animeextension/all/kamyroll/AccessTokenInterceptor.kt @@ -144,7 +144,7 @@ class AccessTokenInterceptor( companion object { private const val TOKEN_PREF_KEY = "access_token_data" - private const val LOCAL_TOKEN_PREF_KEY = "local_access_token_data_test_adwa" + private const val LOCAL_TOKEN_PREF_KEY = "local_access_token_data" private const val PREF_FETCH_LOCAL_SUBS = "preferred_local_subs" private val DateFormatter by lazy { diff --git a/src/all/kamyroll/src/eu/kanade/tachiyomi/animeextension/all/kamyroll/Yomiroll.kt b/src/all/kamyroll/src/eu/kanade/tachiyomi/animeextension/all/kamyroll/Yomiroll.kt index a77b2e865..ec16662bf 100644 --- a/src/all/kamyroll/src/eu/kanade/tachiyomi/animeextension/all/kamyroll/Yomiroll.kt +++ b/src/all/kamyroll/src/eu/kanade/tachiyomi/animeextension/all/kamyroll/Yomiroll.kt @@ -19,6 +19,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.withContext import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.decodeFromString import kotlinx.serialization.encodeToString @@ -71,6 +72,7 @@ class Yomiroll : ConfigurableAnimeSource, AnimeHttpSource() { private const val PREF_AUD = "preferred_audio" private const val PREF_SUB = "preferred_sub" private const val PREF_SUB_TYPE = "preferred_sub_type" + // there is one in AccessTokenInterceptor too for below private const val PREF_FETCH_LOCAL_SUBS = "preferred_local_subs" } @@ -548,38 +550,24 @@ class Yomiroll : ConfigurableAnimeSource, AnimeHttpSource() { this.apply { key = PREF_FETCH_LOCAL_SUBS title = "Fetch Local Subs (Don't Spam this please!)" - Thread { - summary = try { - val storedToken = tokenInterceptor.getLocalToken() - """Token location: ${storedToken?.bucket?.substringAfter("/")?.substringBefore("/")} - |Expires: ${storedToken?.policyExpire?.let { DateFormatter.format(it) } ?: "---"} - """.trimMargin() - } catch (e: Exception) { - "" - } - }.start() + runBlocking { + withContext(Dispatchers.IO) { summary = getTokenDetail() } + } setDefaultValue(false) - setOnPreferenceChangeListener { _, newValue -> val new = newValue as Boolean - if (new) { - Thread { - summary = try { - val storedToken = tokenInterceptor.getLocalToken(true)!! - """Token location: ${storedToken.bucket?.substringAfter("/")?.substringBefore("/") ?: ""} - |Expires: ${storedToken.policyExpire?.let { DateFormatter.format(it) } ?: ""} + Thread { + runBlocking { + if (new) { + withContext(Dispatchers.IO) { summary = getTokenDetail(true) } + } else { + tokenInterceptor.removeLocalToken() + summary = """Token location: + |Expires: """.trimMargin() - } catch (e: Exception) { - "" } - }.start() - } else { - Thread { - tokenInterceptor.removeLocalToken() - summary = """Token location: - |Expires:""".trimMargin() - }.start() - } + } + }.start() preferences.edit().putBoolean(key, new).commit() } } @@ -592,4 +580,15 @@ class Yomiroll : ConfigurableAnimeSource, AnimeHttpSource() { runBlocking { map { async(Dispatchers.Default) { f(it) } }.awaitAll() } + + private fun getTokenDetail(force: Boolean = false): String { + return try { + val storedToken = tokenInterceptor.getLocalToken(force) + """Token location: ${storedToken?.bucket?.substringAfter("/")?.substringBefore("/") ?: ""} + |Expires: ${storedToken?.policyExpire?.let { DateFormatter.format(it) } ?: ""} + """.trimMargin() + } catch (e: Exception) { + "" + } + } } diff --git a/src/en/uhdmovies/build.gradle b/src/en/uhdmovies/build.gradle index 665c00957..b67e402f4 100644 --- a/src/en/uhdmovies/build.gradle +++ b/src/en/uhdmovies/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'UHD Movies' pkgNameSuffix = 'en.uhdmovies' extClass = '.UHDMovies' - extVersionCode = 9 + extVersionCode = 10 libVersion = '13' } diff --git a/src/en/uhdmovies/src/eu/kanade/tachiyomi/animeextension/en/uhdmovies/UHDMovies.kt b/src/en/uhdmovies/src/eu/kanade/tachiyomi/animeextension/en/uhdmovies/UHDMovies.kt index 0d30d7e38..8ef3f85c5 100644 --- a/src/en/uhdmovies/src/eu/kanade/tachiyomi/animeextension/en/uhdmovies/UHDMovies.kt +++ b/src/en/uhdmovies/src/eu/kanade/tachiyomi/animeextension/en/uhdmovies/UHDMovies.kt @@ -227,7 +227,7 @@ class UHDMovies : ConfigurableAnimeSource, ParsedAnimeHttpSource() { urlJson.urls.parallelMap { url -> runCatching { val (videos, mediaUrl) = extractVideo(url) - if (videos.isEmpty()) failedMediaUrl.add(Pair(mediaUrl, url.quality)) + if (videos.isEmpty() && mediaUrl.isNotBlank()) failedMediaUrl.add(Pair(mediaUrl, url.quality)) return@runCatching videos }.getOrNull() }