From f43fe5830e3c56a173e6fe220b16737428f191d6 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Thu, 8 Sep 2022 15:35:53 +0300 Subject: [PATCH] Fix crashes --- .../java/org/koitharu/kotatsu/base/ui/BaseActivity.kt | 4 ++-- .../core/exceptions/resolve/ExceptionResolver.kt | 10 +++++----- .../org/koitharu/kotatsu/core/os/ShortcutsUpdater.kt | 8 +++++--- .../main/java/org/koitharu/kotatsu/utils/ext/Bundle.kt | 9 +++++++++ .../kotatsu/widget/shelf/ShelfConfigActivity.kt | 2 ++ app/src/main/res/values/constants.xml | 2 +- 6 files changed, 24 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/base/ui/BaseActivity.kt b/app/src/main/java/org/koitharu/kotatsu/base/ui/BaseActivity.kt index 4f87f334d..8f92acc31 100644 --- a/app/src/main/java/org/koitharu/kotatsu/base/ui/BaseActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/base/ui/BaseActivity.kt @@ -12,7 +12,6 @@ import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.view.ActionMode import androidx.appcompat.widget.ActionBarContextView import androidx.appcompat.widget.Toolbar -import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import androidx.core.graphics.ColorUtils import androidx.core.view.ViewCompat @@ -92,7 +91,8 @@ abstract class BaseActivity : override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { if (BuildConfig.DEBUG && keyCode == KeyEvent.KEYCODE_VOLUME_UP) { // TODO remove - ActivityCompat.recreate(this) + // ActivityCompat.recreate(this) + TODO("Test error") return true } return super.onKeyDown(keyCode, event) diff --git a/app/src/main/java/org/koitharu/kotatsu/core/exceptions/resolve/ExceptionResolver.kt b/app/src/main/java/org/koitharu/kotatsu/core/exceptions/resolve/ExceptionResolver.kt index d0165c7ca..27f73e19f 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/exceptions/resolve/ExceptionResolver.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/exceptions/resolve/ExceptionResolver.kt @@ -6,6 +6,9 @@ import androidx.activity.result.ActivityResultLauncher import androidx.annotation.StringRes import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity +import kotlin.coroutines.Continuation +import kotlin.coroutines.resume +import kotlin.coroutines.suspendCoroutine import kotlinx.coroutines.suspendCancellableCoroutine import org.koitharu.kotatsu.R import org.koitharu.kotatsu.browser.BrowserActivity @@ -17,9 +20,6 @@ import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.settings.sources.auth.SourceAuthActivity import org.koitharu.kotatsu.utils.TaggedActivityResult import org.koitharu.kotatsu.utils.isSuccess -import kotlin.coroutines.Continuation -import kotlin.coroutines.resume -import kotlin.coroutines.suspendCoroutine class ExceptionResolver private constructor( private val activity: FragmentActivity?, @@ -65,7 +65,7 @@ class ExceptionResolver private constructor( cont.invokeOnCancellation { continuations.remove(CloudFlareDialog.TAG, cont) fm.clearFragmentResultListener(CloudFlareDialog.TAG) - dialog.dismiss() + dialog.dismissAllowingStateLoss() } } } @@ -94,4 +94,4 @@ class ExceptionResolver private constructor( fun canResolve(e: Throwable) = getResolveStringId(e) != 0 } -} \ No newline at end of file +} diff --git a/app/src/main/java/org/koitharu/kotatsu/core/os/ShortcutsUpdater.kt b/app/src/main/java/org/koitharu/kotatsu/core/os/ShortcutsUpdater.kt index eefe100a7..ef8e341c1 100644 --- a/app/src/main/java/org/koitharu/kotatsu/core/os/ShortcutsUpdater.kt +++ b/app/src/main/java/org/koitharu/kotatsu/core/os/ShortcutsUpdater.kt @@ -4,7 +4,6 @@ import android.app.ActivityManager import android.content.Context import android.content.SharedPreferences import android.content.pm.ShortcutManager -import android.media.ThumbnailUtils import android.os.Build import android.util.Size import androidx.annotation.RequiresApi @@ -15,6 +14,8 @@ import androidx.core.graphics.drawable.IconCompat import androidx.room.InvalidationTracker import coil.ImageLoader import coil.request.ImageRequest +import coil.size.Precision +import coil.size.Scale import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import javax.inject.Singleton @@ -112,13 +113,14 @@ class ShortcutsUpdater @Inject constructor( private suspend fun buildShortcutInfo(manga: Manga): ShortcutInfoCompat.Builder { val icon = runCatching { - val bmp = coil.execute( + coil.execute( ImageRequest.Builder(context) .data(manga.coverUrl) .size(iconSize.width, iconSize.height) + .precision(Precision.EXACT) + .scale(Scale.FILL) .build(), ).requireBitmap() - ThumbnailUtils.extractThumbnail(bmp, iconSize.width, iconSize.height, 0) }.fold( onSuccess = { IconCompat.createWithAdaptiveBitmap(it) }, onFailure = { IconCompat.createWithResource(context, R.drawable.ic_shortcut_default) }, diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/ext/Bundle.kt b/app/src/main/java/org/koitharu/kotatsu/utils/ext/Bundle.kt index 3d7b2523c..c9ecf6694 100644 --- a/app/src/main/java/org/koitharu/kotatsu/utils/ext/Bundle.kt +++ b/app/src/main/java/org/koitharu/kotatsu/utils/ext/Bundle.kt @@ -8,6 +8,9 @@ import java.io.Serializable @Suppress("DEPRECATION") inline fun Bundle.getParcelableCompat(key: String): T? { + if (!containsKey(key)) { + return null + } return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { getParcelable(key, T::class.java) } else { @@ -17,6 +20,9 @@ inline fun Bundle.getParcelableCompat(key: String): T? @Suppress("DEPRECATION") inline fun Intent.getParcelableExtraCompat(key: String): T? { + if (!hasExtra(key)) { + return null + } return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { getParcelableExtra(key, T::class.java) } else { @@ -26,6 +32,9 @@ inline fun Intent.getParcelableExtraCompat(key: String) @Suppress("DEPRECATION") inline fun Bundle.getSerializableCompat(key: String): T? { + if (!containsKey(key)) { + return null + } return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { getSerializable(key, T::class.java) } else { diff --git a/app/src/main/java/org/koitharu/kotatsu/widget/shelf/ShelfConfigActivity.kt b/app/src/main/java/org/koitharu/kotatsu/widget/shelf/ShelfConfigActivity.kt index 55dba682c..a6a987cc7 100644 --- a/app/src/main/java/org/koitharu/kotatsu/widget/shelf/ShelfConfigActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/widget/shelf/ShelfConfigActivity.kt @@ -13,6 +13,7 @@ import androidx.core.view.updateLayoutParams import androidx.core.view.updatePadding import com.google.android.material.R as materialR import com.google.android.material.snackbar.Snackbar +import dagger.hilt.android.AndroidEntryPoint import org.koitharu.kotatsu.R import org.koitharu.kotatsu.base.ui.BaseActivity import org.koitharu.kotatsu.base.ui.list.OnListItemClickListener @@ -22,6 +23,7 @@ import org.koitharu.kotatsu.utils.ext.getDisplayMessage import org.koitharu.kotatsu.widget.shelf.adapter.CategorySelectAdapter import org.koitharu.kotatsu.widget.shelf.model.CategoryItem +@AndroidEntryPoint class ShelfConfigActivity : BaseActivity(), OnListItemClickListener, diff --git a/app/src/main/res/values/constants.xml b/app/src/main/res/values/constants.xml index 88f15044d..14108882b 100644 --- a/app/src/main/res/values/constants.xml +++ b/app/src/main/res/values/constants.xml @@ -6,7 +6,7 @@ https://twitter.com/kotatsuapp https://reddit.com/user/kotatsuapp https://hosted.weblate.org/engage/kotatsu - http://86.57.183.214:8082/report + https://acra.rumblur.space/report org.kotatsu.sync http://86.57.183.214:8081