From 8af374294569349214da3dab687060121b77109c Mon Sep 17 00:00:00 2001 From: Jays2Kings Date: Sun, 17 Oct 2021 04:15:36 -0400 Subject: [PATCH] Fixes to biometric prompt for app shortcuts Fixes #1049 --- .../eu/kanade/tachiyomi/ui/main/SearchActivity.kt | 4 ++++ .../tachiyomi/ui/manga/MangaDetailsController.kt | 13 ++++++++++--- .../tachiyomi/ui/security/SecureActivityDelegate.kt | 4 ++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/SearchActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/SearchActivity.kt index 5f1c130119..13ee8f21f2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/SearchActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/SearchActivity.kt @@ -130,6 +130,9 @@ class SearchActivity : MainActivity() { } } } + if (intent.action == SHORTCUT_MANGA_BACK) { + SecureActivityDelegate.promptLockIfNeeded(this, true) + } router.replaceTopController( RouterTransaction.with(MangaDetailsController(extras)) .pushChangeHandler(SimpleSwapChangeHandler()) @@ -138,6 +141,7 @@ class SearchActivity : MainActivity() { } SHORTCUT_SOURCE -> { val extras = intent.extras ?: return false + SecureActivityDelegate.promptLockIfNeeded(this, true) router.replaceTopController( RouterTransaction.with(BrowseSourceController(extras)) .pushChangeHandler(SimpleSwapChangeHandler()) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt index 22f6a373be..196f44a065 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt @@ -1203,9 +1203,16 @@ class MangaDetailsController : } private fun isLocked(): Boolean { + if (presenter.isLockedFromSearch) { + return SecureActivityDelegate.shouldBeLocked() + } + return false + } + + private fun needsToBeUnlocked(): Boolean { if (presenter.isLockedFromSearch) { SecureActivityDelegate.promptLockIfNeeded(activity) - return true + return SecureActivityDelegate.shouldBeLocked() } return false } @@ -1352,7 +1359,7 @@ class MangaDetailsController : } override fun favoriteManga(longPress: Boolean) { - if (isLocked()) return + if (needsToBeUnlocked()) return val manga = presenter.manga val categories = presenter.getCategories() if (!manga.favorite) { @@ -1469,7 +1476,7 @@ class MangaDetailsController : } override fun showTrackingSheet() { - if (isLocked()) return + if (needsToBeUnlocked()) return trackingBottomSheet = TrackingBottomSheet(this) trackingBottomSheet?.show() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/security/SecureActivityDelegate.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/security/SecureActivityDelegate.kt index 84620f507d..c4e985eab6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/security/SecureActivityDelegate.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/security/SecureActivityDelegate.kt @@ -28,13 +28,13 @@ object SecureActivityDelegate { } } - fun promptLockIfNeeded(activity: Activity?) { + fun promptLockIfNeeded(activity: Activity?, requireSuccess: Boolean = false) { if (activity == null || isAuthenticating) return val lockApp = preferences.useBiometrics().get() if (lockApp && BiometricManager.from(activity).canAuthenticate(BiometricManager.Authenticators.DEVICE_CREDENTIAL or BiometricManager.Authenticators.BIOMETRIC_WEAK) == BiometricManager.BIOMETRIC_SUCCESS) { if (isAppLocked()) { val intent = Intent(activity, BiometricActivity::class.java) - intent.putExtra("fromSearch", (activity is SearchActivity)) + intent.putExtra("fromSearch", (activity is SearchActivity) && !requireSuccess) activity.startActivity(intent) activity.overridePendingTransition(0, 0) }