fix: use LaunchedEffect instead of state conditionals
This commit is contained in:
parent
c8242507b3
commit
d88f7d6b33
|
|
@ -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("")
|
||||
}
|
||||
}
|
||||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Reference in New Issue