mirror of
https://github.com/Myzel394/Alibi.git
synced 2025-06-19 07:15:25 +02:00
refactor: Passed down navigation action lambda instead of nav controller
This commit is contained in:
parent
41b3801d60
commit
011d760c74
@ -1,18 +1,5 @@
|
|||||||
package app.myzel394.alibi.ui
|
package app.myzel394.alibi.ui
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.hardware.biometrics.BiometricManager.Authenticators.BIOMETRIC_STRONG
|
|
||||||
import android.hardware.biometrics.BiometricManager.Authenticators.DEVICE_CREDENTIAL
|
|
||||||
import android.hardware.biometrics.BiometricPrompt
|
|
||||||
import android.hardware.biometrics.BiometricPrompt.CryptoObject
|
|
||||||
import android.hardware.camera2.CameraCharacteristics
|
|
||||||
import android.hardware.camera2.CameraManager
|
|
||||||
import android.os.Build
|
|
||||||
import android.os.CancellationSignal
|
|
||||||
import android.widget.Button
|
|
||||||
import androidx.annotation.RequiresApi
|
|
||||||
import androidx.appcompat.app.AppCompatDelegate
|
|
||||||
import androidx.camera.core.CameraX
|
|
||||||
import androidx.compose.animation.core.tween
|
import androidx.compose.animation.core.tween
|
||||||
import androidx.compose.animation.fadeIn
|
import androidx.compose.animation.fadeIn
|
||||||
import androidx.compose.animation.fadeOut
|
import androidx.compose.animation.fadeOut
|
||||||
@ -24,28 +11,22 @@ import androidx.compose.foundation.background
|
|||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.DisposableEffect
|
import androidx.compose.runtime.DisposableEffect
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.core.content.ContextCompat
|
|
||||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
import androidx.navigation.compose.NavHost
|
import androidx.navigation.compose.NavHost
|
||||||
import androidx.navigation.compose.composable
|
import androidx.navigation.compose.composable
|
||||||
import androidx.navigation.compose.rememberNavController
|
import androidx.navigation.compose.rememberNavController
|
||||||
import app.myzel394.alibi.R
|
|
||||||
import app.myzel394.alibi.dataStore
|
import app.myzel394.alibi.dataStore
|
||||||
import app.myzel394.alibi.db.AppSettings
|
|
||||||
import app.myzel394.alibi.ui.enums.Screen
|
import app.myzel394.alibi.ui.enums.Screen
|
||||||
import app.myzel394.alibi.ui.models.AudioRecorderModel
|
import app.myzel394.alibi.ui.models.AudioRecorderModel
|
||||||
import app.myzel394.alibi.ui.models.VideoRecorderModel
|
import app.myzel394.alibi.ui.models.VideoRecorderModel
|
||||||
import app.myzel394.alibi.ui.screens.AboutScreen
|
import app.myzel394.alibi.ui.screens.AboutScreen
|
||||||
import app.myzel394.alibi.ui.screens.RecorderScreen
|
|
||||||
import app.myzel394.alibi.ui.screens.CustomRecordingNotificationsScreen
|
import app.myzel394.alibi.ui.screens.CustomRecordingNotificationsScreen
|
||||||
|
import app.myzel394.alibi.ui.screens.RecorderScreen
|
||||||
import app.myzel394.alibi.ui.screens.SettingsScreen
|
import app.myzel394.alibi.ui.screens.SettingsScreen
|
||||||
import app.myzel394.alibi.ui.screens.WelcomeScreen
|
import app.myzel394.alibi.ui.screens.WelcomeScreen
|
||||||
import app.myzel394.alibi.ui.utils.CameraInfo
|
|
||||||
import app.myzel394.alibi.helpers.AppLockHelper
|
|
||||||
|
|
||||||
const val SCALE_IN = 1.25f
|
const val SCALE_IN = 1.25f
|
||||||
|
|
||||||
@ -79,7 +60,7 @@ fun Navigation(
|
|||||||
startDestination = if (settings.hasSeenOnboarding) Screen.AudioRecorder.route else Screen.Welcome.route,
|
startDestination = if (settings.hasSeenOnboarding) Screen.AudioRecorder.route else Screen.Welcome.route,
|
||||||
) {
|
) {
|
||||||
composable(Screen.Welcome.route) {
|
composable(Screen.Welcome.route) {
|
||||||
WelcomeScreen(navController = navController)
|
WelcomeScreen(onNavigateToAudioRecorderScreen = { navController.navigate(Screen.AudioRecorder.route) })
|
||||||
}
|
}
|
||||||
composable(
|
composable(
|
||||||
Screen.AudioRecorder.route,
|
Screen.AudioRecorder.route,
|
||||||
@ -94,7 +75,9 @@ fun Navigation(
|
|||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
RecorderScreen(
|
RecorderScreen(
|
||||||
navController = navController,
|
onNavigateToSettingsScreen = {
|
||||||
|
navController.navigate(Screen.Settings.route)
|
||||||
|
},
|
||||||
audioRecorder = audioRecorder,
|
audioRecorder = audioRecorder,
|
||||||
videoRecorder = videoRecorder,
|
videoRecorder = videoRecorder,
|
||||||
settings = settings,
|
settings = settings,
|
||||||
@ -110,7 +93,11 @@ fun Navigation(
|
|||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
SettingsScreen(
|
SettingsScreen(
|
||||||
navController = navController,
|
onBackNavigate = navController::popBackStack,
|
||||||
|
onNavigateToCustomRecordingNotifications = {
|
||||||
|
navController.navigate(Screen.CustomRecordingNotifications.route)
|
||||||
|
},
|
||||||
|
onNavigateToAboutScreen = { navController.navigate(Screen.About.route) },
|
||||||
audioRecorder = audioRecorder,
|
audioRecorder = audioRecorder,
|
||||||
videoRecorder = videoRecorder,
|
videoRecorder = videoRecorder,
|
||||||
)
|
)
|
||||||
@ -129,7 +116,7 @@ fun Navigation(
|
|||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
CustomRecordingNotificationsScreen(
|
CustomRecordingNotificationsScreen(
|
||||||
navController = navController,
|
onBackNavigate = navController::popBackStack
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
composable(
|
composable(
|
||||||
@ -142,7 +129,7 @@ fun Navigation(
|
|||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
AboutScreen(
|
AboutScreen(
|
||||||
navController = navController,
|
onBackNavigate = navController::popBackStack,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ import app.myzel394.alibi.ui.enums.Screen
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun AboutTile(
|
fun AboutTile(
|
||||||
navController: NavController,
|
onNavigateToAboutScreen: () -> Unit,
|
||||||
) {
|
) {
|
||||||
val label = stringResource(R.string.ui_about_title)
|
val label = stringResource(R.string.ui_about_title)
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ fun AboutTile(
|
|||||||
contentDescription = label
|
contentDescription = label
|
||||||
}
|
}
|
||||||
.clickable {
|
.clickable {
|
||||||
navController.navigate(Screen.About.route)
|
onNavigateToAboutScreen()
|
||||||
}
|
}
|
||||||
.background(MaterialTheme.colorScheme.surfaceVariant)
|
.background(MaterialTheme.colorScheme.surfaceVariant)
|
||||||
.padding(16.dp),
|
.padding(16.dp),
|
||||||
|
@ -21,7 +21,7 @@ import app.myzel394.alibi.ui.enums.Screen
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun CustomNotificationTile(
|
fun CustomNotificationTile(
|
||||||
navController: NavController,
|
onNavigateToCustomRecordingNotifications: () -> Unit,
|
||||||
settings: AppSettings,
|
settings: AppSettings,
|
||||||
) {
|
) {
|
||||||
val dataStore = LocalContext.current.dataStore
|
val dataStore = LocalContext.current.dataStore
|
||||||
@ -35,7 +35,8 @@ fun CustomNotificationTile(
|
|||||||
SettingsTile(
|
SettingsTile(
|
||||||
firstModifier = Modifier
|
firstModifier = Modifier
|
||||||
.clickable {
|
.clickable {
|
||||||
navController.navigate(Screen.CustomRecordingNotifications.route)
|
|
||||||
|
onNavigateToCustomRecordingNotifications()
|
||||||
}
|
}
|
||||||
.semantics { contentDescription = label },
|
.semantics { contentDescription = label },
|
||||||
title = stringResource(R.string.ui_settings_option_customNotification_title),
|
title = stringResource(R.string.ui_settings_option_customNotification_title),
|
||||||
|
@ -53,7 +53,7 @@ import app.myzel394.alibi.ui.components.AboutScreen.atoms.GPGKeyOverview
|
|||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun AboutScreen(
|
fun AboutScreen(
|
||||||
navController: NavController,
|
onBackNavigate: () -> Unit
|
||||||
) {
|
) {
|
||||||
val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(
|
val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(
|
||||||
rememberTopAppBarState()
|
rememberTopAppBarState()
|
||||||
@ -67,7 +67,7 @@ fun AboutScreen(
|
|||||||
Text(stringResource(R.string.ui_about_title))
|
Text(stringResource(R.string.ui_about_title))
|
||||||
},
|
},
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = navController::popBackStack) {
|
IconButton(onClick = onBackNavigate) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.Default.ArrowBack,
|
Icons.Default.ArrowBack,
|
||||||
contentDescription = "Back"
|
contentDescription = "Back"
|
||||||
|
@ -50,7 +50,7 @@ import kotlinx.coroutines.launch
|
|||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun CustomRecordingNotificationsScreen(
|
fun CustomRecordingNotificationsScreen(
|
||||||
navController: NavController,
|
onBackNavigate: () -> Unit
|
||||||
) {
|
) {
|
||||||
val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(
|
val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(
|
||||||
rememberTopAppBarState()
|
rememberTopAppBarState()
|
||||||
@ -79,7 +79,7 @@ fun CustomRecordingNotificationsScreen(
|
|||||||
Text(stringResource(R.string.ui_settings_option_customNotification_title))
|
Text(stringResource(R.string.ui_settings_option_customNotification_title))
|
||||||
},
|
},
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = navController::popBackStack) {
|
IconButton(onClick = onBackNavigate) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.Default.ArrowBack,
|
Icons.Default.ArrowBack,
|
||||||
contentDescription = "Back"
|
contentDescription = "Back"
|
||||||
@ -110,7 +110,7 @@ fun CustomRecordingNotificationsScreen(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
navController.popBackStack()
|
onBackNavigate()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
|
@ -36,7 +36,7 @@ import app.myzel394.alibi.ui.models.VideoRecorderModel
|
|||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun RecorderScreen(
|
fun RecorderScreen(
|
||||||
navController: NavController,
|
onNavigateToSettingsScreen: () -> Unit,
|
||||||
audioRecorder: AudioRecorderModel,
|
audioRecorder: AudioRecorderModel,
|
||||||
videoRecorder: VideoRecorderModel,
|
videoRecorder: VideoRecorderModel,
|
||||||
settings: AppSettings,
|
settings: AppSettings,
|
||||||
@ -82,7 +82,7 @@ fun RecorderScreen(
|
|||||||
actions = {
|
actions = {
|
||||||
IconButton(
|
IconButton(
|
||||||
onClick = {
|
onClick = {
|
||||||
navController.navigate(Screen.Settings.route)
|
onNavigateToSettingsScreen()
|
||||||
},
|
},
|
||||||
) {
|
) {
|
||||||
Icon(
|
Icon(
|
||||||
|
@ -66,7 +66,9 @@ import kotlinx.coroutines.launch
|
|||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun SettingsScreen(
|
fun SettingsScreen(
|
||||||
navController: NavController,
|
onBackNavigate: () -> Unit,
|
||||||
|
onNavigateToCustomRecordingNotifications: () -> Unit,
|
||||||
|
onNavigateToAboutScreen: () -> Unit,
|
||||||
audioRecorder: AudioRecorderModel,
|
audioRecorder: AudioRecorderModel,
|
||||||
videoRecorder: VideoRecorderModel,
|
videoRecorder: VideoRecorderModel,
|
||||||
) {
|
) {
|
||||||
@ -97,7 +99,7 @@ fun SettingsScreen(
|
|||||||
Text(stringResource(R.string.ui_settings_title))
|
Text(stringResource(R.string.ui_settings_title))
|
||||||
},
|
},
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = navController::popBackStack) {
|
IconButton(onClick = onBackNavigate) {
|
||||||
Icon(
|
Icon(
|
||||||
Icons.Default.ArrowBack,
|
Icons.Default.ArrowBack,
|
||||||
contentDescription = "Back"
|
contentDescription = "Back"
|
||||||
@ -141,7 +143,7 @@ fun SettingsScreen(
|
|||||||
IntervalDurationTile(settings = settings)
|
IntervalDurationTile(settings = settings)
|
||||||
InAppLanguagePicker()
|
InAppLanguagePicker()
|
||||||
DeleteRecordingsImmediatelyTile(settings = settings)
|
DeleteRecordingsImmediatelyTile(settings = settings)
|
||||||
CustomNotificationTile(navController = navController, settings = settings)
|
CustomNotificationTile(onNavigateToCustomRecordingNotifications, settings = settings)
|
||||||
EnableAppLockTile(settings = settings)
|
EnableAppLockTile(settings = settings)
|
||||||
SaveFolderTile(
|
SaveFolderTile(
|
||||||
settings = settings,
|
settings = settings,
|
||||||
@ -191,7 +193,7 @@ fun SettingsScreen(
|
|||||||
ImportExport(snackbarHostState = snackbarHostState)
|
ImportExport(snackbarHostState = snackbarHostState)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AboutTile(navController = navController)
|
AboutTile(onNavigateToAboutScreen)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ import kotlinx.coroutines.launch
|
|||||||
@OptIn(ExperimentalFoundationApi::class)
|
@OptIn(ExperimentalFoundationApi::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun WelcomeScreen(
|
fun WelcomeScreen(
|
||||||
navController: NavController,
|
onNavigateToAudioRecorderScreen: () -> Unit
|
||||||
) {
|
) {
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val dataStore = context.dataStore
|
val dataStore = context.dataStore
|
||||||
@ -59,7 +59,7 @@ fun WelcomeScreen(
|
|||||||
dataStore.updateData {
|
dataStore.updateData {
|
||||||
settings.setHasSeenOnboarding(true)
|
settings.setHasSeenOnboarding(true)
|
||||||
}
|
}
|
||||||
navController.navigate(Screen.AudioRecorder.route)
|
onNavigateToAudioRecorderScreen()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user