-
-
Notifications
You must be signed in to change notification settings - Fork 51
Expand file tree
/
Copy pathMainActivity.kt
More file actions
69 lines (56 loc) · 2.53 KB
/
MainActivity.kt
File metadata and controls
69 lines (56 loc) · 2.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package dev.pranav.applock
import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.material3.Text
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.fragment.app.FragmentActivity
import dev.pranav.applock.core.utils.BiometricStatus
import dev.pranav.applock.core.utils.getBiometricStatus
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.compose.LifecycleEventEffect
import androidx.navigation.compose.rememberNavController
import dev.pranav.applock.core.navigation.AppNavHost
import dev.pranav.applock.core.navigation.NavigationManager
import dev.pranav.applock.core.navigation.Screen
import dev.pranav.applock.ui.theme.AppLockTheme
class MainActivity : FragmentActivity() {
private lateinit var navigationManager: NavigationManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
navigationManager = NavigationManager(this)
val biometricStatus = getBiometricStatus(this)
setContent {
AppLockTheme {
if (biometricStatus is BiometricStatus.Unavailable) {
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
Text(biometricStatus.message)
}
} else {
val navController = rememberNavController()
val startDestination = navigationManager.determineStartDestination()
AppNavHost(
navController = navController,
startDestination = startDestination
)
LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
handleOnResume(navController)
}
}
}
}
}
private fun handleOnResume(navController: androidx.navigation.NavHostController) {
val currentRoute = navController.currentDestination?.route
if (navigationManager.shouldSkipPasswordCheck(currentRoute)) {
return
}
if (currentRoute != Screen.PasswordOverlay.route && currentRoute != Screen.SetPassword.route && currentRoute != Screen.SetPasswordPattern.route && currentRoute != Screen.SetPasswordText.route) {
navController.navigate(Screen.PasswordOverlay.route)
}
}
}