Fix back stack

This commit is contained in:
2025-12-07 17:23:46 +03:00
Unverified
parent 30a20f85b8
commit fc9a25ad29
4 changed files with 42 additions and 25 deletions
@@ -1,19 +0,0 @@
package ru.fromchat.ui
import androidx.navigation.NavController
/**
* Clears the entire back stack except the current screen
*/
fun NavController.wipeBackStack() {
// Keep popping until there are no previous entries
var entry = previousBackStackEntry
while (entry != null) {
val destinationId = entry.destination.id
val success = popBackStack(destinationId, inclusive = true)
if (!success) break
// Check again after popping
entry = previousBackStackEntry
}
}
@@ -39,6 +39,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.unit.dp
import com.pr0gramm3r101.utils.navigateAndWipeBackStack
import com.pr0gramm3r101.utils.storage.ServerConfigData
import kotlinx.coroutines.launch
import org.jetbrains.compose.resources.stringResource
@@ -54,7 +55,6 @@ import ru.fromchat.server_config_title
import ru.fromchat.server_url_hint
import ru.fromchat.server_url_label
import ru.fromchat.ui.LocalNavController
import ru.fromchat.ui.wipeBackStack
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@@ -166,11 +166,8 @@ fun ServerConfigScreen() {
// Shutdown WebSocket (will reconnect on login)
WebSocketManager.shutdown()
// Clear entire back stack except current screen
navController.wipeBackStack()
// Navigate to login
navController.navigate("login")
// Navigate to login and wipe entire back stack
navController.navigateAndWipeBackStack("login")
}
},
enabled = !isLoading && serverUrl.isNotBlank(),