diff --git a/app/src/main/java/chat/revolt/screens/SplashScreen.kt b/app/src/main/java/chat/revolt/screens/SplashScreen.kt index 7c92ffa8..6453175c 100644 --- a/app/src/main/java/chat/revolt/screens/SplashScreen.kt +++ b/app/src/main/java/chat/revolt/screens/SplashScreen.kt @@ -7,10 +7,7 @@ import android.net.NetworkCapabilities import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.* -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.setValue +import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale @@ -137,7 +134,7 @@ fun SplashScreen( ) } - if (viewModel.navigateTo.isNotEmpty()) { + LaunchedEffect(viewModel.navigateTo) { when (viewModel.navigateTo) { "login" -> { navController.navigate("login/greeting") { @@ -154,6 +151,5 @@ fun SplashScreen( } } } - viewModel.setNavigateTo("") } } \ No newline at end of file diff --git a/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt b/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt index 07f88b11..45a7e860 100644 --- a/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt +++ b/app/src/main/java/chat/revolt/screens/login/LoginScreen.kt @@ -6,10 +6,7 @@ import androidx.compose.material3.Button import androidx.compose.material3.ElevatedButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.setValue +import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource @@ -91,9 +88,6 @@ class LoginViewModel @Inject constructor( } } - fun navigationComplete() { - _navigateTo = null - } fun setEmail(email: String) { _email = email @@ -109,20 +103,23 @@ fun LoginScreen( navController: NavController, viewModel: LoginViewModel = hiltViewModel() ) { - if (viewModel.navigateTo == "mfa") { - navController.navigate( - "login/mfa/${viewModel.mfaResponse!!.mfaSpec!!.ticket}/${ - viewModel.mfaResponse!!.mfaSpec!!.allowedMethods.joinToString( - "," + LaunchedEffect(viewModel.navigateTo) { + when (viewModel.navigateTo) { + "mfa" -> { + navController.navigate( + "login/mfa/${viewModel.mfaResponse!!.mfaSpec!!.ticket}/${ + viewModel.mfaResponse!!.mfaSpec!!.allowedMethods.joinToString( + "," + ) + }" ) - }" - ) - viewModel.navigationComplete() - } else if (viewModel.navigateTo == "home") { - navController.navigate("chat") { - popUpTo("login/greeting") { inclusive = true } + } + "home" -> { + navController.navigate("chat") { + popUpTo("login/greeting") { inclusive = true } + } + } } - viewModel.navigationComplete() } Column( @@ -199,8 +196,6 @@ fun LoginScreen( .padding(horizontal = 20.dp, vertical = 30.dp), horizontalAlignment = Alignment.CenterHorizontally ) { - - Weblink( text = stringResource(R.string.password_manager_hint), url = "$REVOLT_SUPPORT/kb/interface/android/using-a-password-manager", diff --git a/app/src/main/java/chat/revolt/screens/login/MfaScreen.kt b/app/src/main/java/chat/revolt/screens/login/MfaScreen.kt index 9bf992c8..1764b277 100644 --- a/app/src/main/java/chat/revolt/screens/login/MfaScreen.kt +++ b/app/src/main/java/chat/revolt/screens/login/MfaScreen.kt @@ -8,10 +8,7 @@ import androidx.compose.material3.Button import androidx.compose.material3.ElevatedButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.setValue +import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource @@ -65,10 +62,6 @@ class MfaScreenViewModel @Inject constructor( _recoveryCode = code } - fun navigationComplete() { - _navigateToHome = false - } - fun tryAuthorizeTotp(mfaTicket: String) { _error = null viewModelScope.launch { @@ -128,11 +121,12 @@ fun MfaScreen( ) { val allowedAuthTypes = allowedAuthTypesCommaSep.split(",") - if (viewModel.navigateToHome) { - navController.navigate("chat") { - popUpTo("login/greeting") { inclusive = true } + LaunchedEffect(viewModel.navigateToHome) { + if (viewModel.navigateToHome) { + navController.navigate("chat") { + popUpTo("login/greeting") { inclusive = true } + } } - viewModel.navigationComplete() } Column(