Navigate back to the login screen after registering

This commit is contained in:
Z. Charles Dziura 2024-11-08 15:06:46 -05:00
parent 4847c1bb21
commit d19e489c9f
3 changed files with 29 additions and 3 deletions

View file

@ -5,5 +5,5 @@ HOSTNAME=127.0.0.1
MAINTENANCE_USER_ACCOUNT=debt_pirate:HRURqlUmtjIy MAINTENANCE_USER_ACCOUNT=debt_pirate:HRURqlUmtjIy
PORT=42069 PORT=42069
RUST_LOG=debt_pirate=trace RUST_LOG=debt_pirate=trace
SEND_VERIFICATION_EMAIL=false SEND_VERIFICATION_EMAIL=true
TOKEN_KEY=k4.local.hWoS2ZulK9xPEATtXH1Dvj_iynzqfUv5ER5_IFTg5-Q TOKEN_KEY=k4.local.hWoS2ZulK9xPEATtXH1Dvj_iynzqfUv5ER5_IFTg5-Q

View file

@ -17,6 +17,7 @@ import dagger.hilt.android.AndroidEntryPoint
import ing.bikeshedengineer.debtpirate.auth.presentation.login.LoginScreen import ing.bikeshedengineer.debtpirate.auth.presentation.login.LoginScreen
import ing.bikeshedengineer.debtpirate.auth.presentation.register.RegistrationScreen import ing.bikeshedengineer.debtpirate.auth.presentation.register.RegistrationScreen
import ing.bikeshedengineer.debtpirate.navigation.Destination import ing.bikeshedengineer.debtpirate.navigation.Destination
import ing.bikeshedengineer.debtpirate.navigation.NavigationAction
import ing.bikeshedengineer.debtpirate.navigation.Navigator import ing.bikeshedengineer.debtpirate.navigation.Navigator
import ing.bikeshedengineer.debtpirate.theme.DebtPirateTheme import ing.bikeshedengineer.debtpirate.theme.DebtPirateTheme
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@ -35,9 +36,23 @@ class MainActivity : ComponentActivity() {
setContent { setContent {
val navController = rememberNavController() val navController = rememberNavController()
ObserveAsEvents(navigator.navigationActions) { action ->
when (action) {
is NavigationAction.Navigate -> {
navController.navigate(action.destination) {
action.navOptions(this)
}
}
is NavigationAction.NavigateUp -> {
navController.navigateUp()
}
}
}
DebtPirateTheme { DebtPirateTheme {
NavHost(navController = navController, startDestination = Destination.AuthGraph) { NavHost(navController = navController, startDestination = Destination.AuthGraph) {
navigation<Destination.AuthGraph>(startDestination = Destination.RegistrationScreen) { navigation<Destination.AuthGraph>(startDestination = Destination.LoginScreen) {
composable<Destination.LoginScreen>() { LoginScreen() } composable<Destination.LoginScreen>() { LoginScreen() }
composable<Destination.RegistrationScreen>() { RegistrationScreen() } composable<Destination.RegistrationScreen>() { RegistrationScreen() }
} }
@ -48,7 +63,7 @@ class MainActivity : ComponentActivity() {
} }
@Composable @Composable
private fun <T> _ObserveAsEvents(flow: Flow<T>, onEvent: (T) -> Unit) { private fun <T> ObserveAsEvents(flow: Flow<T>, onEvent: (T) -> Unit) {
val lifecycleOwner = LocalLifecycleOwner.current val lifecycleOwner = LocalLifecycleOwner.current
LaunchedEffect(lifecycleOwner.lifecycle) { LaunchedEffect(lifecycleOwner.lifecycle) {
lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {

View file

@ -6,6 +6,7 @@ import dagger.hilt.android.lifecycle.HiltViewModel
import ing.bikeshedengineer.debtpirate.auth.usecase.NewAccountRegistrationValidationResult import ing.bikeshedengineer.debtpirate.auth.usecase.NewAccountRegistrationValidationResult
import ing.bikeshedengineer.debtpirate.auth.usecase.SubmitAccountRegistrationRequestUseCase import ing.bikeshedengineer.debtpirate.auth.usecase.SubmitAccountRegistrationRequestUseCase
import ing.bikeshedengineer.debtpirate.auth.usecase.ValidateNewAccountRegistrationUseCase import ing.bikeshedengineer.debtpirate.auth.usecase.ValidateNewAccountRegistrationUseCase
import ing.bikeshedengineer.debtpirate.navigation.Destination
import ing.bikeshedengineer.debtpirate.navigation.Navigator import ing.bikeshedengineer.debtpirate.navigation.Navigator
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
@ -81,6 +82,9 @@ class RegistrationScreenViewModel @Inject constructor(
viewModelScope.launch { viewModelScope.launch {
try { try {
val result = submitAccountRegistrationRequest(emailAddress, name, confirmPassword) val result = submitAccountRegistrationRequest(emailAddress, name, confirmPassword)
navigator.navigate(Destination.LoginScreen)
resetFields()
} catch (err: Throwable) { } catch (err: Throwable) {
// TODO... // TODO...
} }
@ -139,4 +143,11 @@ class RegistrationScreenViewModel @Inject constructor(
} }
}.isEmpty() }.isEmpty()
} }
private fun resetFields() {
_emailAddress.value = ""
_name.value = ""
_password.value = ""
_confirmPassword.value = ""
}
} }