mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Enable secure screen when incognito mode is enabled (#5339)
* Enable secure screen when incognito mode is enabled * Fix incognito banner not showing up after configuration changes
This commit is contained in:
		@@ -4,11 +4,17 @@ import android.content.res.Configuration.UI_MODE_NIGHT_MASK
 | 
			
		||||
import android.content.res.Configuration.UI_MODE_NIGHT_YES
 | 
			
		||||
import android.os.Bundle
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity
 | 
			
		||||
import androidx.lifecycle.lifecycleScope
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferenceValues.DarkThemeVariant
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferenceValues.LightThemeVariant
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferenceValues.ThemeMode
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.asImmediateFlow
 | 
			
		||||
import eu.kanade.tachiyomi.util.view.setSecureScreen
 | 
			
		||||
import kotlinx.coroutines.flow.launchIn
 | 
			
		||||
import uy.kohesive.injekt.Injekt
 | 
			
		||||
import uy.kohesive.injekt.api.get
 | 
			
		||||
import uy.kohesive.injekt.injectLazy
 | 
			
		||||
 | 
			
		||||
abstract class BaseThemedActivity : AppCompatActivity() {
 | 
			
		||||
@@ -38,6 +44,13 @@ abstract class BaseThemedActivity : AppCompatActivity() {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        setTheme(themeId)
 | 
			
		||||
 | 
			
		||||
        Injekt.get<PreferencesHelper>().incognitoMode()
 | 
			
		||||
            .asImmediateFlow {
 | 
			
		||||
                window.setSecureScreen(it)
 | 
			
		||||
            }
 | 
			
		||||
            .launchIn(lifecycleScope)
 | 
			
		||||
 | 
			
		||||
        super.onCreate(savedInstanceState)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -237,6 +237,7 @@ class MainActivity : BaseViewBindingActivity<MainActivityBinding>() {
 | 
			
		||||
            .asImmediateFlow { binding.downloadedOnly.isVisible = it }
 | 
			
		||||
            .launchIn(lifecycleScope)
 | 
			
		||||
 | 
			
		||||
        binding.incognitoMode.isVisible = preferences.incognitoMode().get()
 | 
			
		||||
        preferences.incognitoMode().asFlow()
 | 
			
		||||
            .drop(1)
 | 
			
		||||
            .onEach {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,11 @@
 | 
			
		||||
package eu.kanade.tachiyomi.ui.security
 | 
			
		||||
 | 
			
		||||
import android.content.Intent
 | 
			
		||||
import android.view.WindowManager
 | 
			
		||||
import androidx.fragment.app.FragmentActivity
 | 
			
		||||
import androidx.lifecycle.lifecycleScope
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.AuthenticatorUtil
 | 
			
		||||
import eu.kanade.tachiyomi.util.view.setSecureScreen
 | 
			
		||||
import kotlinx.coroutines.flow.launchIn
 | 
			
		||||
import kotlinx.coroutines.flow.onEach
 | 
			
		||||
import uy.kohesive.injekt.injectLazy
 | 
			
		||||
@@ -17,13 +17,7 @@ class SecureActivityDelegate(private val activity: FragmentActivity) {
 | 
			
		||||
 | 
			
		||||
    fun onCreate() {
 | 
			
		||||
        preferences.secureScreen().asFlow()
 | 
			
		||||
            .onEach {
 | 
			
		||||
                if (it) {
 | 
			
		||||
                    activity.window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)
 | 
			
		||||
                } else {
 | 
			
		||||
                    activity.window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            .onEach { activity.window.setSecureScreen(it || preferences.incognitoMode().get()) }
 | 
			
		||||
            .launchIn(activity.lifecycleScope)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,7 @@ import android.graphics.Color
 | 
			
		||||
import android.os.Build
 | 
			
		||||
import android.view.View
 | 
			
		||||
import android.view.Window
 | 
			
		||||
import android.view.WindowManager
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.InternalResourceHelper
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.getResourceColor
 | 
			
		||||
 | 
			
		||||
@@ -42,3 +43,11 @@ fun Window.setNavigationBarTransparentCompat(context: Context) {
 | 
			
		||||
        context.getResourceColor(android.R.attr.navigationBarColor, 0.7F)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fun Window.setSecureScreen(enabled: Boolean) {
 | 
			
		||||
    if (enabled) {
 | 
			
		||||
        setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)
 | 
			
		||||
    } else {
 | 
			
		||||
        clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user