From 7ca44480a9517d1d4012265f613fc5e6e7938c74 Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Sun, 14 Apr 2024 22:24:58 -0500 Subject: [PATCH] fix: offline mode failing --- app/src/main/java/ani/dantotsu/Functions.kt | 6 +++++- .../ani/dantotsu/media/anime/AnimeWatchFragment.kt | 14 ++++++++++---- .../ani/dantotsu/media/manga/MangaReadFragment.kt | 3 +++ app/src/main/java/ani/dantotsu/profile/User.kt | 9 ++++++++- .../java/ani/dantotsu/util/StoragePermissions.kt | 2 +- build.gradle | 2 +- 6 files changed, 28 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/Functions.kt b/app/src/main/java/ani/dantotsu/Functions.kt index 98264c6c..1b4b6e4a 100644 --- a/app/src/main/java/ani/dantotsu/Functions.kt +++ b/app/src/main/java/ani/dantotsu/Functions.kt @@ -1350,7 +1350,11 @@ fun blurImage(imageView: ImageView, banner: String?) { if (!(context as Activity).isDestroyed) { val url = PrefManager.getVal(PrefName.ImageUrl).ifEmpty { banner } Glide.with(context as Context) - .load(GlideUrl(url)) + .load( + if (banner.startsWith("http")) GlideUrl(url) else if (banner.startsWith("content://")) Uri.parse( + url + ) else File(url) + ) .diskCacheStrategy(DiskCacheStrategy.RESOURCE).override(400) .apply(RequestOptions.bitmapTransform(BlurTransformation(radius, sampling))) .into(imageView) diff --git a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt index 5358f08c..bbe0f908 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt @@ -36,6 +36,7 @@ import ani.dantotsu.download.DownloadsManager import ani.dantotsu.download.DownloadsManager.Companion.compareName import ani.dantotsu.download.anime.AnimeDownloaderService import ani.dantotsu.dp +import ani.dantotsu.isOnline import ani.dantotsu.media.Media import ani.dantotsu.media.MediaDetailsActivity import ani.dantotsu.media.MediaDetailsViewModel @@ -198,10 +199,15 @@ class AnimeWatchFragment : Fragment() { ConcatAdapter(headerAdapter, episodeAdapter) lifecycleScope.launch(Dispatchers.IO) { - awaitAll( - async { model.loadKitsuEpisodes(media) }, - async { model.loadFillerEpisodes(media) } - ) + val offline = !isOnline(binding.root.context) || PrefManager.getVal(PrefName.OfflineMode) + if (offline) { + media.selected!!.sourceIndex = model.watchSources!!.list.lastIndex + } else { + awaitAll( + async { model.loadKitsuEpisodes(media) }, + async { model.loadFillerEpisodes(media) } + ) + } model.loadEpisodes(media, media.selected!!.sourceIndex) } loaded = true diff --git a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt index 75110f4d..9228a3f9 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt @@ -38,6 +38,7 @@ import ani.dantotsu.download.DownloadsManager.Companion.compareName import ani.dantotsu.download.manga.MangaDownloaderService import ani.dantotsu.download.manga.MangaServiceDataSingleton import ani.dantotsu.dp +import ani.dantotsu.isOnline import ani.dantotsu.media.Media import ani.dantotsu.media.MediaDetailsActivity import ani.dantotsu.media.MediaDetailsViewModel @@ -202,6 +203,8 @@ open class MangaReadFragment : Fragment(), ScanlatorSelectionListener { ConcatAdapter(headerAdapter, chapterAdapter) lifecycleScope.launch(Dispatchers.IO) { + val offline = !isOnline(binding.root.context) || PrefManager.getVal(PrefName.OfflineMode) + if (offline) media.selected!!.sourceIndex = model.mangaReadSources!!.list.lastIndex model.loadMangaChapters(media, media.selected!!.sourceIndex) } loaded = true diff --git a/app/src/main/java/ani/dantotsu/profile/User.kt b/app/src/main/java/ani/dantotsu/profile/User.kt index 565fc09b..15814f44 100644 --- a/app/src/main/java/ani/dantotsu/profile/User.kt +++ b/app/src/main/java/ani/dantotsu/profile/User.kt @@ -1,5 +1,8 @@ package ani.dantotsu.profile +import kotlinx.serialization.Serializable + +@Serializable data class User( val id: Int, val name: String, @@ -11,4 +14,8 @@ data class User( val progress: Int? = null, val totalEpisodes : Int? = null, val nextAiringEpisode : Int? = null, -) \ No newline at end of file +) : java.io.Serializable { + companion object { + private const val serialVersionUID: Long = 1 + } +} \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/util/StoragePermissions.kt b/app/src/main/java/ani/dantotsu/util/StoragePermissions.kt index 485b0dd9..d4f62bdd 100644 --- a/app/src/main/java/ani/dantotsu/util/StoragePermissions.kt +++ b/app/src/main/java/ani/dantotsu/util/StoragePermissions.kt @@ -65,7 +65,7 @@ class StoragePermissions { force: Boolean = false, complete: (Boolean) -> Unit ) { - if ((PrefManager.getVal(PrefName.DownloadsDir).isNotEmpty() || hasDirAccess(this)) && !force) { + if (hasDirAccess(this) && !force) { complete(true) return } diff --git a/build.gradle b/build.gradle index 8f7bd6c8..577411af 100644 --- a/build.gradle +++ b/build.gradle @@ -12,7 +12,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:8.3.1' + classpath 'com.android.tools.build:gradle:8.3.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" classpath "com.google.devtools.ksp:symbol-processing-api:$ksp_version"