diff --git a/app/src/main/java/eu/kanade/tachiyomi/appwidget/UpdatesGridGlanceWidget.kt b/app/src/main/java/eu/kanade/tachiyomi/appwidget/UpdatesGridGlanceWidget.kt index e939be381e..fab24c4a8c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/appwidget/UpdatesGridGlanceWidget.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/appwidget/UpdatesGridGlanceWidget.kt @@ -31,20 +31,19 @@ import eu.kanade.tachiyomi.appwidget.components.LockedWidget import eu.kanade.tachiyomi.appwidget.components.UpdatesWidget import eu.kanade.tachiyomi.appwidget.util.appWidgetBackgroundRadius import eu.kanade.tachiyomi.appwidget.util.calculateRowAndColumnCount +import eu.kanade.tachiyomi.core.security.SecurityPreferences import eu.kanade.tachiyomi.data.database.models.Manga -import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.recents.RecentsPresenter import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.util.system.launchIO import kotlinx.coroutines.MainScope import uy.kohesive.injekt.injectLazy -import java.util.Calendar -import java.util.Date +import java.util.* import kotlin.math.min class UpdatesGridGlanceWidget : GlanceAppWidget() { private val app: Application by injectLazy() - private val preferences: PreferencesHelper by injectLazy() + private val preferences: SecurityPreferences by injectLazy() private val coroutineScope = MainScope() diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt index 0a30b1517f..d79e589401 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt @@ -169,8 +169,6 @@ object PreferenceKeys { const val languageBadge = "display_language_badge" - const val useBiometrics = "use_biometrics" - const val lockAfter = "lock_after" const val lastUnlock = "last_unlock" diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt index e86b2da262..6c836ca00d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -294,8 +294,6 @@ class PreferencesHelper(val context: Context, val preferenceStore: PreferenceSto fun skipDupe() = preferenceStore.getBoolean("skip_dupe", false) - fun useBiometrics() = preferenceStore.getBoolean(Keys.useBiometrics, false) - fun lockAfter() = preferenceStore.getInt(Keys.lockAfter, 0) fun lastUnlock() = preferenceStore.getLong(Keys.lastUnlock, 0) 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 941bf3e4b8..423a002e0a 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 @@ -6,16 +6,18 @@ import android.os.Build import android.view.Window import android.view.WindowManager import androidx.biometric.BiometricManager +import eu.kanade.tachiyomi.core.security.SecurityPreferences import eu.kanade.tachiyomi.data.preference.PreferenceValues import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.main.SearchActivity import eu.kanade.tachiyomi.util.system.AuthenticatorUtil import uy.kohesive.injekt.injectLazy -import java.util.Date +import java.util.* object SecureActivityDelegate { - private val preferences by injectLazy() + private val preferences: PreferencesHelper by injectLazy() + private val securityPreferences: SecurityPreferences by injectLazy() var locked: Boolean = true @@ -40,7 +42,7 @@ object SecureActivityDelegate { @Suppress("DEPRECATION") fun promptLockIfNeeded(activity: Activity?, requireSuccess: Boolean = false) { if (activity == null || AuthenticatorUtil.isAuthenticating) return - val lockApp = preferences.useBiometrics().get() + val lockApp = securityPreferences.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) @@ -53,12 +55,12 @@ object SecureActivityDelegate { } } } else if (lockApp) { - preferences.useBiometrics().set(false) + securityPreferences.useBiometrics().set(false) } } fun shouldBeLocked(): Boolean { - val lockApp = preferences.useBiometrics().get() + val lockApp = securityPreferences.useBiometrics().get() if (lockApp && isAppLocked()) return true return false } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsSecurityController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsSecurityController.kt index 90bfc9a696..280fc9f0a0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsSecurityController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsSecurityController.kt @@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.ui.setting.controllers import androidx.fragment.app.FragmentActivity import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.core.security.SecurityPreferences import eu.kanade.tachiyomi.data.preference.PreferenceKeys import eu.kanade.tachiyomi.data.preference.PreferenceValues import eu.kanade.tachiyomi.data.preference.changesIn @@ -18,14 +19,17 @@ import eu.kanade.tachiyomi.ui.setting.requireAuthentication import eu.kanade.tachiyomi.ui.setting.switchPreference import eu.kanade.tachiyomi.ui.setting.titleRes import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.isAuthenticationSupported +import uy.kohesive.injekt.injectLazy class SettingsSecurityController : SettingsLegacyController() { + private val securityPreferences: SecurityPreferences by injectLazy() + override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply { titleRes = R.string.security if (context.isAuthenticationSupported()) { switchPreference { - key = PreferenceKeys.useBiometrics + bindTo(securityPreferences.useBiometrics()) titleRes = R.string.lock_with_biometrics defaultValue = false @@ -53,7 +57,7 @@ class SettingsSecurityController : SettingsLegacyController() { entryValues = values defaultValue = 0 - preferences.useBiometrics().changesIn(viewScope) { isVisible = it } + securityPreferences.useBiometrics().changesIn(viewScope) { isVisible = it } } } diff --git a/app/src/main/java/yokai/core/di/PreferenceModule.kt b/app/src/main/java/yokai/core/di/PreferenceModule.kt index cd50285aa7..9bbe97aaab 100644 --- a/app/src/main/java/yokai/core/di/PreferenceModule.kt +++ b/app/src/main/java/yokai/core/di/PreferenceModule.kt @@ -3,6 +3,7 @@ package yokai.core.di import android.app.Application import eu.kanade.tachiyomi.core.preference.AndroidPreferenceStore import eu.kanade.tachiyomi.core.preference.PreferenceStore +import eu.kanade.tachiyomi.core.security.SecurityPreferences import eu.kanade.tachiyomi.core.storage.AndroidStorageFolderProvider import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.track.TrackPreferences @@ -39,6 +40,8 @@ class PreferenceModule(val application: Application) : InjektModule { addSingletonFactory { NetworkPreferences(get()) } + addSingletonFactory { SecurityPreferences(get()) } + addSingletonFactory { PreferencesHelper( context = application, diff --git a/core/src/commonMain/kotlin/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt b/core/src/commonMain/kotlin/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt new file mode 100644 index 0000000000..e782ae8304 --- /dev/null +++ b/core/src/commonMain/kotlin/eu/kanade/tachiyomi/core/security/SecurityPreferences.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.core.security + +import eu.kanade.tachiyomi.core.preference.PreferenceStore + +class SecurityPreferences(private val preferenceStore: PreferenceStore) { + fun useBiometrics() = preferenceStore.getBoolean("use_biometrics", false) +}