diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt b/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt index a612db593..cf9303073 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt @@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.network.interceptor import android.annotation.SuppressLint import android.content.Context -import android.os.Build import android.webkit.WebSettings import android.webkit.WebView import android.widget.Toast @@ -11,7 +10,6 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.util.lang.launchUI -import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.WebViewClientCompat import eu.kanade.tachiyomi.util.system.WebViewUtil import eu.kanade.tachiyomi.util.system.isOutdated @@ -39,13 +37,13 @@ class CloudflareInterceptor(private val context: Context) : Interceptor { * Application class. */ private val initWebView by lazy { - // Avoid crashes on Samsung devices on Android 12 - // See https://bugs.chromium.org/p/chromium/issues/detail?id=1279562 - if (Build.VERSION.SDK_INT == Build.VERSION_CODES.S && DeviceUtil.isSamsung) { - return@lazy + try { + WebSettings.getDefaultUserAgent(context) + } catch (_: Exception) { + // Crashes on some devices. We just ignore it since the only impact is slower + // WebView init in those rare cases. + // See https://bugs.chromium.org/p/chromium/issues/detail?id=1279562 } - - WebSettings.getDefaultUserAgent(context) } @Synchronized diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadHeaderItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadHeaderItem.kt index 3d8a47380..b69cc07bd 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadHeaderItem.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadHeaderItem.kt @@ -8,6 +8,7 @@ import eu.davidea.flexibleadapter.items.IFlexible import eu.kanade.tachiyomi.R data class DownloadHeaderItem( + val id: Long, val name: String, val size: Int ) : AbstractExpandableHeaderItem() { @@ -41,7 +42,7 @@ data class DownloadHeaderItem( } override fun hashCode(): Int { - return name.hashCode() + return id.hashCode() } init { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadPresenter.kt index 0dc8f3eb2..b5c917eea 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadPresenter.kt @@ -33,7 +33,7 @@ class DownloadPresenter : BasePresenter() { downloads .groupBy { it.source } .map { entry -> - DownloadHeaderItem(entry.key.name, entry.value.size).apply { + DownloadHeaderItem(entry.key.id, entry.key.name, entry.value.size).apply { addSubItems(0, entry.value.map { DownloadItem(it, this) }) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt index 6944b6c73..ba1980748 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -260,7 +260,7 @@ class MainActivity : BaseViewBindingActivity() { // Close BrowseSourceController and its MangaController child when incognito mode is disabled if (!it) { - val fg = router.backstack.last().controller + val fg = router.backstack.lastOrNull()?.controller if (fg is BrowseSourceController || fg is MangaController && fg.fromSource) { router.popToRoot() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt index 99fb8e4b2..e59181bc2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt @@ -338,6 +338,9 @@ class MangaController : } private fun updateToolbarTitleAlpha(@FloatRange(from = 0.0, to = 1.0) alpha: Float? = null) { + // Controller may actually already be destroyed by the time this gets run + binding ?: return + val scrolledList = binding.fullRecycler ?: binding.infoRecycler!! (activity as? MainActivity)?.binding?.appbar?.titleTextAlpha = when { // Specific alpha provided diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/DeviceUtil.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/DeviceUtil.kt index 33a132408..8cd20dac8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/DeviceUtil.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/DeviceUtil.kt @@ -1,7 +1,6 @@ package eu.kanade.tachiyomi.util.system import android.annotation.SuppressLint -import android.os.Build import logcat.LogPriority object DeviceUtil { @@ -26,10 +25,6 @@ object DeviceUtil { } } - val isSamsung by lazy { - Build.MANUFACTURER.equals("samsung", ignoreCase = true) - } - @SuppressLint("PrivateApi") private fun getSystemProperty(key: String?): String? { return try {