don't replace with initRoute if oldToken is null

This commit is contained in:
2026-08-08 19:23:01 +03:00
parent e8b74e4152
commit 2f8c983728
2 changed files with 22 additions and 8 deletions
@@ -8,6 +8,7 @@ import com.arkivanov.decompose.router.webhistory.WebNavigation
import com.arkivanov.decompose.router.webhistory.WebNavigationOwner import com.arkivanov.decompose.router.webhistory.WebNavigationOwner
import com.arkivanov.essenty.lifecycle.coroutines.repeatOnLifecycle import com.arkivanov.essenty.lifecycle.coroutines.repeatOnLifecycle
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.firstOrNull
import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -41,13 +42,15 @@ class VBoxRootComponent(
init { init {
scope.launch { scope.launch {
repeatOnLifecycle { repeatOnLifecycle {
var oldToken = tokenStorage.token.firstOrNull()
tokenStorage.token.collect { tokenStorage.token.collect {
if (it != null) { if (it != null) {
val invalid = runCatching { healthCheck.check() }.getOrNull() == null val invalid = runCatching { healthCheck.check() }.getOrNull() == null
if (invalid) { navReplace(initRoute) } if (invalid) navReplace(initRoute)
} else { } else if (oldToken != null) {
navReplace(initRoute) navReplace(initRoute)
} }
oldToken = it
} }
} }
} }
@@ -3,9 +3,11 @@ package ru.shadowsparky.vbox.shared.presentation.overview.season
import androiddev.apps.vbox.client.shared.generated.resources.Res import androiddev.apps.vbox.client.shared.generated.resources.Res
import androiddev.apps.vbox.client.shared.generated.resources.retry import androiddev.apps.vbox.client.shared.generated.resources.retry
import androiddev.apps.vbox.client.shared.generated.resources.seasons_overview import androiddev.apps.vbox.client.shared.generated.resources.seasons_overview
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -17,6 +19,7 @@ import androidx.compose.runtime.withFrameNanos
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.unit.dp
import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.resources.stringResource
import ru.shadowsparky.ui.LocalBlurState import ru.shadowsparky.ui.LocalBlurState
import ru.shadowsparky.ui.applyBlurSource import ru.shadowsparky.ui.applyBlurSource
@@ -24,7 +27,6 @@ import ru.shadowsparky.ui.components.BackButton
import ru.shadowsparky.ui.components.ErrorContent import ru.shadowsparky.ui.components.ErrorContent
import ru.shadowsparky.ui.components.ExpressiveLazyColumn import ru.shadowsparky.ui.components.ExpressiveLazyColumn
import ru.shadowsparky.ui.components.Loading import ru.shadowsparky.ui.components.Loading
import ru.shadowsparky.ui.components.TextPreference
import ru.shadowsparky.ui.components.TopAppBar import ru.shadowsparky.ui.components.TopAppBar
import ru.shadowsparky.ui.rememberBlurState import ru.shadowsparky.ui.rememberBlurState
import ru.shadowsparky.vbox.shared.domain.model.Season import ru.shadowsparky.vbox.shared.domain.model.Season
@@ -79,15 +81,14 @@ fun SeasonsInfo(
content = { content = {
section { section {
itemsIndexed(seasons) { index, season -> itemsIndexed(seasons) { index, season ->
TextPreference( SeasonInfo(
season.title,
onClick = { onClick(season.id) },
modifier = if (index == 0) { modifier = if (index == 0) {
Modifier.focusRequester(requester) Modifier.focusRequester(requester)
} else { } else {
Modifier Modifier
} },
) season.title
) { onClick(season.id) }
} }
} }
} }
@@ -100,3 +101,13 @@ fun SeasonsInfo(
} }
} }
} }
@Composable
fun SeasonInfo(modifier: Modifier, titleText: String, onClick: () -> Unit) {
Text(
titleText,
modifier = modifier.fillMaxWidth()
.clickable { onClick() }
.padding(16.dp)
)
}