mirror of
https://github.com/Myzel394/Alibi.git
synced 2025-06-18 23:05:26 +02:00
feat: Improve AsLockedApp
This commit is contained in:
parent
6661d457ea
commit
2d22a65506
@ -2,21 +2,19 @@ package app.myzel394.alibi
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.view.MotionEvent
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.app.AppCompatDelegate
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.datastore.dataStore
|
||||
import app.myzel394.alibi.db.AppSettings
|
||||
import app.myzel394.alibi.db.AppSettingsSerializer
|
||||
import app.myzel394.alibi.ui.AsLockedApp
|
||||
import app.myzel394.alibi.ui.LockedAppHandlers
|
||||
import app.myzel394.alibi.ui.Navigation
|
||||
import app.myzel394.alibi.ui.SUPPORTS_DARK_MODE_NATIVELY
|
||||
import app.myzel394.alibi.ui.theme.AlibiTheme
|
||||
|
||||
const val SETTINGS_FILE = "settings.json"
|
||||
@ -33,8 +31,18 @@ class MainActivity : AppCompatActivity() {
|
||||
|
||||
setContent {
|
||||
AlibiTheme {
|
||||
AsLockedApp {
|
||||
Navigation()
|
||||
LockedAppHandlers()
|
||||
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.background(
|
||||
MaterialTheme.colorScheme.background
|
||||
)
|
||||
) {
|
||||
AsLockedApp {
|
||||
Navigation()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -39,8 +39,9 @@ import app.myzel394.alibi.helpers.AppLockHelper
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
// After this amount, close the app
|
||||
const val MAX_TRIES = 10
|
||||
const val MAX_TRIES = 5
|
||||
|
||||
// Makes sure the app needs to be unlocked first, if app lock is enabled
|
||||
@Composable
|
||||
fun AsLockedApp(
|
||||
content: (@Composable () -> Unit),
|
||||
|
32
app/src/main/java/app/myzel394/alibi/ui/LockedAppHandlers.kt
Normal file
32
app/src/main/java/app/myzel394/alibi/ui/LockedAppHandlers.kt
Normal file
@ -0,0 +1,32 @@
|
||||
package app.myzel394.alibi.ui
|
||||
|
||||
import androidx.appcompat.app.AppCompatDelegate
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import app.myzel394.alibi.dataStore
|
||||
import app.myzel394.alibi.db.AppSettings
|
||||
|
||||
// Handlers that can safely be run when the app is locked (biometric authentication required)
|
||||
@Composable
|
||||
fun LockedAppHandlers() {
|
||||
val context = LocalContext.current
|
||||
val settings = context
|
||||
.dataStore
|
||||
.data
|
||||
.collectAsState(initial = null)
|
||||
.value ?: return
|
||||
|
||||
LaunchedEffect(settings.theme) {
|
||||
if (!SUPPORTS_DARK_MODE_NATIVELY) {
|
||||
val currentValue = AppCompatDelegate.getDefaultNightMode()
|
||||
|
||||
if (settings.theme == AppSettings.Theme.LIGHT && currentValue != AppCompatDelegate.MODE_NIGHT_NO) {
|
||||
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
|
||||
} else if (settings.theme == AppSettings.Theme.DARK && currentValue != AppCompatDelegate.MODE_NIGHT_YES) {
|
||||
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -72,18 +72,6 @@ fun Navigation(
|
||||
}
|
||||
}
|
||||
|
||||
LaunchedEffect(settings.theme) {
|
||||
if (!SUPPORTS_DARK_MODE_NATIVELY) {
|
||||
val currentValue = AppCompatDelegate.getDefaultNightMode()
|
||||
|
||||
if (settings.theme == AppSettings.Theme.LIGHT && currentValue != AppCompatDelegate.MODE_NIGHT_NO) {
|
||||
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
|
||||
} else if (settings.theme == AppSettings.Theme.DARK && currentValue != AppCompatDelegate.MODE_NIGHT_YES) {
|
||||
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NavHost(
|
||||
modifier = Modifier
|
||||
.background(MaterialTheme.colorScheme.background),
|
||||
|
Loading…
x
Reference in New Issue
Block a user