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
PORT=42069
RUST_LOG=debt_pirate=trace
SEND_VERIFICATION_EMAIL=false
SEND_VERIFICATION_EMAIL=true
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.register.RegistrationScreen
import ing.bikeshedengineer.debtpirate.navigation.Destination
import ing.bikeshedengineer.debtpirate.navigation.NavigationAction
import ing.bikeshedengineer.debtpirate.navigation.Navigator
import ing.bikeshedengineer.debtpirate.theme.DebtPirateTheme
import kotlinx.coroutines.Dispatchers
@ -35,9 +36,23 @@ class MainActivity : ComponentActivity() {
setContent {
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 {
NavHost(navController = navController, startDestination = Destination.AuthGraph) {
navigation<Destination.AuthGraph>(startDestination = Destination.RegistrationScreen) {
navigation<Destination.AuthGraph>(startDestination = Destination.LoginScreen) {
composable<Destination.LoginScreen>() { LoginScreen() }
composable<Destination.RegistrationScreen>() { RegistrationScreen() }
}
@ -48,7 +63,7 @@ class MainActivity : ComponentActivity() {
}
@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
LaunchedEffect(lifecycleOwner.lifecycle) {
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.SubmitAccountRegistrationRequestUseCase
import ing.bikeshedengineer.debtpirate.auth.usecase.ValidateNewAccountRegistrationUseCase
import ing.bikeshedengineer.debtpirate.navigation.Destination
import ing.bikeshedengineer.debtpirate.navigation.Navigator
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
@ -81,6 +82,9 @@ class RegistrationScreenViewModel @Inject constructor(
viewModelScope.launch {
try {
val result = submitAccountRegistrationRequest(emailAddress, name, confirmPassword)
navigator.navigate(Destination.LoginScreen)
resetFields()
} catch (err: Throwable) {
// TODO...
}
@ -139,4 +143,11 @@ class RegistrationScreenViewModel @Inject constructor(
}
}.isEmpty()
}
private fun resetFields() {
_emailAddress.value = ""
_name.value = ""
_password.value = ""
_confirmPassword.value = ""
}
}