Navigate back to the login screen after registering
This commit is contained in:
parent
4847c1bb21
commit
d19e489c9f
3 changed files with 29 additions and 3 deletions
2
api/.env
2
api/.env
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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 = ""
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue