mirror of
https://github.com/JustinZeus/Wholphin.git
synced 2026-11-06 02:40:58 +01:00
Fix possible crash if remembered tab no longer exists (#1613)
## Description If remember tabs is enabled and the current remembered index is somehow removed, the app would crash. I think the only way a regular user can encounter this is if the server removes a live TV recording folder that the user has selected/remembered. All other tabbed pages use a fixed list. ### Related issues None ### Testing Emulator ## Screenshots N/A ## AI or LLM usage None
This commit is contained in:
parent
f21b29fe1b
commit
7422f15bff
1 changed files with 11 additions and 4 deletions
|
|
@ -37,10 +37,14 @@ class TabViewModel
|
|||
private val rememberedTabService: RememberedTabService,
|
||||
private val backdropService: BackdropService,
|
||||
@param:Assisted private val itemId: String,
|
||||
@param:Assisted private val tabCount: Int,
|
||||
) : ViewModel() {
|
||||
@AssistedFactory
|
||||
interface Factory {
|
||||
fun create(itemId: String): TabViewModel
|
||||
fun create(
|
||||
itemId: String,
|
||||
tabCount: Int,
|
||||
): TabViewModel
|
||||
}
|
||||
|
||||
private val _state = MutableStateFlow<Int>(UNSET)
|
||||
|
|
@ -52,7 +56,9 @@ class TabViewModel
|
|||
if (shouldRememberTabs()) {
|
||||
Timber.v("Getting remembered tab for %s", itemId)
|
||||
try {
|
||||
rememberedTabService.getRememberedTab(itemId)
|
||||
rememberedTabService
|
||||
.getRememberedTab(itemId)
|
||||
?.coerceIn(0..<tabCount)
|
||||
} catch (ex: Exception) {
|
||||
Timber.e(ex, "Error getting tab for %s", itemId)
|
||||
null
|
||||
|
|
@ -106,12 +112,13 @@ fun TabbedPage(
|
|||
showTabs: Boolean = true,
|
||||
viewModel: TabViewModel =
|
||||
hiltViewModel<TabViewModel, TabViewModel.Factory>(
|
||||
key = itemId,
|
||||
creationCallback = { it.create(itemId) },
|
||||
key = "$itemId-${tabs.size}",
|
||||
creationCallback = { it.create(itemId, tabs.size) },
|
||||
),
|
||||
tabContent: @Composable (Int, TabDetails) -> Unit,
|
||||
) {
|
||||
val selectedTabIndex by viewModel.state.collectAsState()
|
||||
|
||||
Column(
|
||||
modifier = modifier,
|
||||
) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue