diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/host/MainActivity.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/host/MainActivity.kt index 5a2dc53..c29d494 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/host/MainActivity.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/host/MainActivity.kt @@ -15,6 +15,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.lifecycle.Lifecycle import androidx.lifecycle.compose.LocalLifecycleOwner +import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable @@ -31,6 +32,7 @@ import ing.bikeshedengineer.debtpirate.navigation.Navigator import ing.bikeshedengineer.debtpirate.theme.DebtPirateTheme import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import javax.inject.Inject @@ -86,13 +88,11 @@ class MainActivity : ComponentActivity() { } ) { navigation( - startDestination = Destination.RegistrationConfirmationCheckEmailScreen( - emailAddress = "zachary@dziura.email" - ) + startDestination = Destination.LoginScreen ) { - composable() { LoginScreen() } - composable() { RegistrationScreen() } - composable() { + composable { LoginScreen() } + composable { RegistrationScreen() } + composable { val (emailAddress, _) = it.toRoute() ConfirmationScreen( emailAddress @@ -129,6 +129,10 @@ class MainActivity : ComponentActivity() { private fun handleNewUserVerificationIntent(userId: Int, sessionToken: String) { Log.d("DebtPirate::MainActivity", "User ID: $userId, Session Token: $sessionToken") + + lifecycleScope.launch { + navigator.navigate(Destination.RegistrationConfirmationCheckEmailScreen(comingFromEmail = true)) + } } } diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/register/RegistrationScreen.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/register/RegistrationScreen.kt index 1e4bab0..9344371 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/register/RegistrationScreen.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/register/RegistrationScreen.kt @@ -1,6 +1,7 @@ package ing.bikeshedengineer.debtpirate.app.screen.auth.presentation.register import android.annotation.SuppressLint +import android.util.Log import android.widget.Toast import androidx.activity.ComponentActivity import androidx.compose.foundation.layout.Column @@ -70,17 +71,15 @@ fun RegistrationScreen( val (emailAddress, password) = credentials val result = accountManager.storeCredentials(emailAddress, password) - when (result) { - is AccountManagerResult.Failure -> { - Toast.makeText(context, "Unable to store credentials", Toast.LENGTH_SHORT).show() - } - else -> { - Toast.makeText(context, "Registration successful", Toast.LENGTH_SHORT).show() - viewModel.onAction(RegistrationScreenAction.ResetFields) - viewModel.navigateUp() - } + if (result !is AccountManagerResult.Success) { + Log.i( + "DebtPirate::RegistrationScreen", + "Not able to store credentials in CredentialManager" + ) } + viewModel.onAction(RegistrationScreenAction.ResetFields) + viewModel.navigateToConfirmationScreen(emailAddress) } } } diff --git a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/register/RegistrationScreenViewModel.kt b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/register/RegistrationScreenViewModel.kt index d3ea658..d7b0c41 100644 --- a/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/register/RegistrationScreenViewModel.kt +++ b/app/app/src/main/java/ing/bikeshedengineer/debtpirate/app/screen/auth/presentation/register/RegistrationScreenViewModel.kt @@ -6,6 +6,7 @@ import dagger.hilt.android.lifecycle.HiltViewModel import ing.bikeshedengineer.debtpirate.app.screen.auth.usecase.NewAccountRegistrationValidationResult import ing.bikeshedengineer.debtpirate.app.screen.auth.usecase.SubmitAccountRegistrationRequestUseCase import ing.bikeshedengineer.debtpirate.app.screen.auth.usecase.ValidateNewAccountRegistrationUseCase +import ing.bikeshedengineer.debtpirate.navigation.Destination import ing.bikeshedengineer.debtpirate.navigation.Navigator import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -27,6 +28,16 @@ class RegistrationScreenViewModel @Inject constructor( } } + fun navigateToConfirmationScreen(emailAddress: String) { + viewModelScope.launch { + navigator.navigate(Destination.RegistrationConfirmationCheckEmailScreen(emailAddress)) { + popUpTo(Destination.LoginScreen) { + inclusive = true + } + } + } + } + private val _emailAddress = MutableStateFlow("") val emailAddress = _emailAddress.asStateFlow()