|
@@ -7,16 +7,17 @@ import androidx.fragment.app.FragmentActivity
|
|
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
|
|
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
|
|
import java.util.Date
|
|
|
+import rx.Subscription
|
|
|
import uy.kohesive.injekt.injectLazy
|
|
|
|
|
|
-object SecureActivityDelegate {
|
|
|
+class SecureActivityDelegate(private val activity: FragmentActivity) {
|
|
|
|
|
|
private val preferences by injectLazy<PreferencesHelper>()
|
|
|
|
|
|
- var locked: Boolean = true
|
|
|
+ private var secureScreenSubscription: Subscription? = null
|
|
|
|
|
|
- fun onCreate(activity: FragmentActivity) {
|
|
|
- preferences.secureScreen().asObservable()
|
|
|
+ fun onCreate() {
|
|
|
+ secureScreenSubscription = preferences.secureScreen().asObservable()
|
|
|
.subscribe {
|
|
|
if (it) {
|
|
|
activity.window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)
|
|
@@ -26,7 +27,7 @@ object SecureActivityDelegate {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- fun onResume(activity: FragmentActivity) {
|
|
|
+ fun onResume() {
|
|
|
val lockApp = preferences.useBiometricLock().getOrDefault()
|
|
|
if (lockApp && BiometricManager.from(activity).canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS) {
|
|
|
if (isAppLocked()) {
|
|
@@ -39,9 +40,17 @@ object SecureActivityDelegate {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ fun onDestroy() {
|
|
|
+ secureScreenSubscription?.unsubscribe()
|
|
|
+ }
|
|
|
+
|
|
|
private fun isAppLocked(): Boolean {
|
|
|
return locked &&
|
|
|
(preferences.lockAppAfter().getOrDefault() <= 0 ||
|
|
|
Date().time >= preferences.lastAppUnlock().getOrDefault() + 60 * 1000 * preferences.lockAppAfter().getOrDefault())
|
|
|
}
|
|
|
+
|
|
|
+ companion object {
|
|
|
+ var locked: Boolean = true
|
|
|
+ }
|
|
|
}
|