diff --git a/app/src/main/java/com/m57/hermescontrol/Navigation.kt b/app/src/main/java/com/m57/hermescontrol/Navigation.kt index 0e1cde44..cc7a1022 100644 --- a/app/src/main/java/com/m57/hermescontrol/Navigation.kt +++ b/app/src/main/java/com/m57/hermescontrol/Navigation.kt @@ -326,7 +326,8 @@ private fun appEntryProvider( @Composable fun MainNavigation(sessionId: String? = null) { - val hasToken = !AuthManager.getToken().isNullOrBlank() + val token by AuthManager.tokenFlow.collectAsState() + val hasToken = !token.isNullOrBlank() val startScreen: NavKey = if (hasToken) ChatScreen else ConnectScreen val backStack = rememberNavBackStack(startScreen) diff --git a/app/src/main/java/com/m57/hermescontrol/data/local/AuthManager.kt b/app/src/main/java/com/m57/hermescontrol/data/local/AuthManager.kt index da5bc8fc..eccf6a65 100644 --- a/app/src/main/java/com/m57/hermescontrol/data/local/AuthManager.kt +++ b/app/src/main/java/com/m57/hermescontrol/data/local/AuthManager.kt @@ -57,6 +57,10 @@ object AuthManager { private val _bottomNavDisplayModeFlow = MutableStateFlow(BottomNavDisplayMode.ICON_AND_TEXT) val bottomNavDisplayModeFlow: StateFlow = _bottomNavDisplayModeFlow.asStateFlow() + + private val _tokenFlow = MutableStateFlow(null) + val tokenFlow: StateFlow = _tokenFlow.asStateFlow() + private val gson = com.google.gson.Gson() /** @@ -84,6 +88,7 @@ object AuthManager { _useDynamicColorsFlow.value = isUseDynamicColors() _themePresetFlow.value = getThemePreset() _bottomNavDisplayModeFlow.value = getBottomNavDisplayMode() + _tokenFlow.value = getToken() } } @@ -122,6 +127,9 @@ object AuthManager { token: String?, ) { requirePrefs().edit().putString("token_$profileId", token).apply() + if (getSelectedProfileId() == profileId) { + _tokenFlow.value = token + } } fun getSelectedProfileId(): String? { @@ -131,6 +139,7 @@ object AuthManager { fun setSelectedProfileId(id: String?) { requirePrefs().edit().putString(KEY_SELECTED_PROFILE_ID, id).apply() + _tokenFlow.value = getToken() } // ── Token ──────────────────────────────────────────────────────────── @@ -150,6 +159,7 @@ object AuthManager { setProfileToken(selectedId, token) } else { requirePrefs().edit().putString(KEY_TOKEN, token).apply() + _tokenFlow.value = token } }