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
|
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
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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 = ""
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue