Allow disabling secure screen when incognito mode is on

(cherry picked from commit 299e52e877d57cd912ac5dab2fe9c087c95ca350)

# Conflicts:
#	app/build.gradle.kts
#	app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSecurityController.kt
This commit is contained in:
arkon 2022-02-05 18:51:08 -05:00 committed by Jobobby04
parent 75096e9808
commit d1c40b8b85
8 changed files with 46 additions and 12 deletions

View File

@ -29,7 +29,7 @@ android {
applicationId = "eu.kanade.tachiyomi.sy" applicationId = "eu.kanade.tachiyomi.sy"
minSdk = AndroidConfig.minSdk minSdk = AndroidConfig.minSdk
targetSdk = AndroidConfig.targetSdk targetSdk = AndroidConfig.targetSdk
versionCode = 26 versionCode = 27
versionName = "1.8.1" versionName = "1.8.1"
buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"") buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"")

View File

@ -7,6 +7,7 @@ import eu.kanade.tachiyomi.data.backup.BackupCreatorJob
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
import eu.kanade.tachiyomi.data.preference.MANGA_ONGOING import eu.kanade.tachiyomi.data.preference.MANGA_ONGOING
import eu.kanade.tachiyomi.data.preference.PreferenceKeys import eu.kanade.tachiyomi.data.preference.PreferenceKeys
import eu.kanade.tachiyomi.data.preference.PreferenceValues
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.updater.AppUpdateJob import eu.kanade.tachiyomi.data.updater.AppUpdateJob
@ -247,6 +248,12 @@ object Migrations {
preferences.libraryUpdateMangaRestriction() -= MANGA_ONGOING preferences.libraryUpdateMangaRestriction() -= MANGA_ONGOING
} }
} }
if (oldVersion < 75) {
val oldSecureScreen = prefs.getBoolean("secure_screen", false)
if (oldSecureScreen) {
preferences.secureScreen().set(PreferenceValues.SecureScreenMode.ALWAYS)
}
}
return true return true
} }

View File

@ -72,6 +72,12 @@ object PreferenceValues {
SHIZUKU, SHIZUKU,
} }
enum class SecureScreenMode {
ALWAYS,
INCOGNITO,
NEVER,
}
// SY --> // SY -->
enum class GroupLibraryMode { enum class GroupLibraryMode {
GLOBAL, GLOBAL,

View File

@ -60,7 +60,7 @@ class PreferencesHelper(val context: Context) {
fun lastAppUnlock() = flowPrefs.getLong("last_app_unlock", 0) fun lastAppUnlock() = flowPrefs.getLong("last_app_unlock", 0)
fun secureScreen() = flowPrefs.getBoolean("secure_screen", false) fun secureScreen() = flowPrefs.getEnum("secure_screen_v2", Values.SecureScreenMode.INCOGNITO)
fun hideNotificationContent() = prefs.getBoolean(Keys.hideNotificationContent, false) fun hideNotificationContent() = prefs.getBoolean(Keys.hideNotificationContent, false)

View File

@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.ui.security
import android.content.Intent import android.content.Intent
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import eu.kanade.tachiyomi.data.preference.PreferenceValues
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.category.biometric.TimeRange import eu.kanade.tachiyomi.ui.category.biometric.TimeRange
import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.isAuthenticationSupported import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.isAuthenticationSupported
@ -23,8 +24,8 @@ class SecureActivityDelegate(private val activity: FragmentActivity) {
fun onCreate() { fun onCreate() {
val secureScreenFlow = preferences.secureScreen().asFlow() val secureScreenFlow = preferences.secureScreen().asFlow()
val incognitoModeFlow = preferences.incognitoMode().asFlow() val incognitoModeFlow = preferences.incognitoMode().asFlow()
secureScreenFlow.combine(incognitoModeFlow) { secureScreen, incognitoMode -> combine(secureScreenFlow, incognitoModeFlow) { secureScreen, incognitoMode ->
secureScreen || incognitoMode secureScreen == PreferenceValues.SecureScreenMode.ALWAYS || secureScreen == PreferenceValues.SecureScreenMode.INCOGNITO && incognitoMode
} }
.onEach { activity.window.setSecureScreen(it) } .onEach { activity.window.setSecureScreen(it) }
.launchIn(activity.lifecycleScope) .launchIn(activity.lifecycleScope)

View File

@ -8,6 +8,7 @@ import androidx.preference.Preference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferenceValues
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
@ -15,7 +16,10 @@ import eu.kanade.tachiyomi.ui.category.biometric.BiometricTimesController
import eu.kanade.tachiyomi.ui.security.SecureActivityDelegate import eu.kanade.tachiyomi.ui.security.SecureActivityDelegate
import eu.kanade.tachiyomi.util.preference.bindTo import eu.kanade.tachiyomi.util.preference.bindTo
import eu.kanade.tachiyomi.util.preference.defaultValue import eu.kanade.tachiyomi.util.preference.defaultValue
import eu.kanade.tachiyomi.util.preference.entriesRes
import eu.kanade.tachiyomi.util.preference.infoPreference
import eu.kanade.tachiyomi.util.preference.intListPreference import eu.kanade.tachiyomi.util.preference.intListPreference
import eu.kanade.tachiyomi.util.preference.listPreference
import eu.kanade.tachiyomi.util.preference.onClick import eu.kanade.tachiyomi.util.preference.onClick
import eu.kanade.tachiyomi.util.preference.preference import eu.kanade.tachiyomi.util.preference.preference
import eu.kanade.tachiyomi.util.preference.requireAuthentication import eu.kanade.tachiyomi.util.preference.requireAuthentication
@ -91,17 +95,24 @@ class SettingsSecurityController : SettingsController() {
} }
} }
switchPreference {
bindTo(preferences.secureScreen())
titleRes = R.string.secure_screen
summaryRes = R.string.secure_screen_summary
}
switchPreference { switchPreference {
key = Keys.hideNotificationContent key = Keys.hideNotificationContent
titleRes = R.string.hide_notification_content titleRes = R.string.hide_notification_content
defaultValue = false defaultValue = false
} }
listPreference {
bindTo(preferences.secureScreen())
titleRes = R.string.secure_screen
summary = "%s"
entriesRes = arrayOf(
R.string.lock_always,
R.string.pref_incognito_mode,
R.string.lock_never,
)
entryValues = PreferenceValues.SecureScreenMode.values().map { it.name }.toTypedArray()
}
// SY --> // SY -->
preference { preference {
key = "pref_edit_lock_times" key = "pref_edit_lock_times"
@ -128,6 +139,8 @@ class SettingsSecurityController : SettingsController() {
} }
} }
// SY <-- // SY <--
infoPreference(R.string.secure_screen_summary)
} }
// SY --> // SY -->

View File

@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.data.database.tables.TrackTable
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
import eu.kanade.tachiyomi.data.preference.MANGA_ONGOING import eu.kanade.tachiyomi.data.preference.MANGA_ONGOING
import eu.kanade.tachiyomi.data.preference.PreferenceKeys import eu.kanade.tachiyomi.data.preference.PreferenceKeys
import eu.kanade.tachiyomi.data.preference.PreferenceValues
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackManager
import eu.kanade.tachiyomi.data.updater.AppUpdateJob import eu.kanade.tachiyomi.data.updater.AppUpdateJob
@ -370,6 +371,12 @@ object EXHMigrations {
xLogE("Failed to delete old favorites database", e) xLogE("Failed to delete old favorites database", e)
} }
} }
if (oldVersion under 27) {
val oldSecureScreen = prefs.getBoolean("secure_screen", false)
if (oldSecureScreen) {
preferences.secureScreen().set(PreferenceValues.SecureScreenMode.ALWAYS)
}
}
// if (oldVersion under 1) { } (1 is current release version) // if (oldVersion under 1) { } (1 is current release version)
// do stuff here when releasing changed crap // do stuff here when releasing changed crap

View File

@ -185,9 +185,9 @@
<item quantity="one">After 1 minute</item> <item quantity="one">After 1 minute</item>
<item quantity="other">After %1$s minutes</item> <item quantity="other">After %1$s minutes</item>
</plurals> </plurals>
<string name="secure_screen">Secure screen</string>
<string name="secure_screen_summary">Hide app contents when switching apps and block screenshots</string>
<string name="hide_notification_content">Hide notification content</string> <string name="hide_notification_content">Hide notification content</string>
<string name="secure_screen">Secure screen</string>
<string name="secure_screen_summary">Secure screen hides app contents when switching apps and block screenshots</string>
<string name="pref_category_nsfw_content">NSFW (18+) sources</string> <string name="pref_category_nsfw_content">NSFW (18+) sources</string>
<string name="pref_show_nsfw_source">Show in sources and extensions lists</string> <string name="pref_show_nsfw_source">Show in sources and extensions lists</string>