mirror of
https://github.com/JustinZeus/Wholphin.git
synced 2026-07-08 23:51:21 +02:00
Use RememberTabManager
This commit is contained in:
parent
5681710b7a
commit
89d8f50a4b
1 changed files with 8 additions and 18 deletions
|
|
@ -23,7 +23,6 @@ import androidx.compose.ui.focus.focusRequester
|
||||||
import androidx.compose.ui.focus.focusRestorer
|
import androidx.compose.ui.focus.focusRestorer
|
||||||
import androidx.compose.ui.focus.onFocusChanged
|
import androidx.compose.ui.focus.onFocusChanged
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.datastore.core.DataStore
|
|
||||||
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
|
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
|
|
@ -37,9 +36,7 @@ import androidx.tv.material3.Text
|
||||||
import com.github.damontecres.wholphin.data.ServerRepository
|
import com.github.damontecres.wholphin.data.ServerRepository
|
||||||
import com.github.damontecres.wholphin.data.model.BaseItem
|
import com.github.damontecres.wholphin.data.model.BaseItem
|
||||||
import com.github.damontecres.wholphin.data.model.GetItemsFilter
|
import com.github.damontecres.wholphin.data.model.GetItemsFilter
|
||||||
import com.github.damontecres.wholphin.preferences.AppPreferences
|
|
||||||
import com.github.damontecres.wholphin.preferences.UserPreferences
|
import com.github.damontecres.wholphin.preferences.UserPreferences
|
||||||
import com.github.damontecres.wholphin.preferences.rememberTab
|
|
||||||
import com.github.damontecres.wholphin.ui.components.CollectionFolderGrid
|
import com.github.damontecres.wholphin.ui.components.CollectionFolderGrid
|
||||||
import com.github.damontecres.wholphin.ui.components.ErrorMessage
|
import com.github.damontecres.wholphin.ui.components.ErrorMessage
|
||||||
import com.github.damontecres.wholphin.ui.detail.livetv.DvrSchedule
|
import com.github.damontecres.wholphin.ui.detail.livetv.DvrSchedule
|
||||||
|
|
@ -50,6 +47,7 @@ import com.github.damontecres.wholphin.ui.nav.Destination
|
||||||
import com.github.damontecres.wholphin.ui.nav.NavigationManager
|
import com.github.damontecres.wholphin.ui.nav.NavigationManager
|
||||||
import com.github.damontecres.wholphin.ui.setValueOnMain
|
import com.github.damontecres.wholphin.ui.setValueOnMain
|
||||||
import com.github.damontecres.wholphin.ui.tryRequestFocus
|
import com.github.damontecres.wholphin.ui.tryRequestFocus
|
||||||
|
import com.github.damontecres.wholphin.util.RememberTabManager
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import org.jellyfin.sdk.api.client.ApiClient
|
import org.jellyfin.sdk.api.client.ApiClient
|
||||||
import org.jellyfin.sdk.api.client.extensions.liveTvApi
|
import org.jellyfin.sdk.api.client.extensions.liveTvApi
|
||||||
|
|
@ -63,8 +61,9 @@ class LiveTvCollectionViewModel
|
||||||
val api: ApiClient,
|
val api: ApiClient,
|
||||||
val serverRepository: ServerRepository,
|
val serverRepository: ServerRepository,
|
||||||
val navigationManager: NavigationManager,
|
val navigationManager: NavigationManager,
|
||||||
val preferenceDataStore: DataStore<AppPreferences>,
|
val rememberTabManager: RememberTabManager,
|
||||||
) : ViewModel() {
|
) : ViewModel(),
|
||||||
|
RememberTabManager by rememberTabManager {
|
||||||
val recordingFolders = MutableLiveData<List<TabId>>()
|
val recordingFolders = MutableLiveData<List<TabId>>()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
|
@ -91,13 +90,8 @@ fun CollectionFolderLiveTv(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
viewModel: LiveTvCollectionViewModel = hiltViewModel(),
|
viewModel: LiveTvCollectionViewModel = hiltViewModel(),
|
||||||
) {
|
) {
|
||||||
val uiPrefs = preferences.appPreferences.interfacePreferences
|
|
||||||
val rememberedTabIndex =
|
val rememberedTabIndex =
|
||||||
if (uiPrefs.rememberSelectedTab) {
|
remember { viewModel.getRememberedTab(preferences, destination.itemId, 0) }
|
||||||
uiPrefs.getRememberedTabsOrDefault(destination.itemId.toString(), 0)
|
|
||||||
} else {
|
|
||||||
0
|
|
||||||
}
|
|
||||||
val folders by viewModel.recordingFolders.observeAsState(listOf())
|
val folders by viewModel.recordingFolders.observeAsState(listOf())
|
||||||
|
|
||||||
val tabs =
|
val tabs =
|
||||||
|
|
@ -113,12 +107,8 @@ fun CollectionFolderLiveTv(
|
||||||
val firstTabFocusRequester = remember { FocusRequester() }
|
val firstTabFocusRequester = remember { FocusRequester() }
|
||||||
LaunchedEffect(Unit) { firstTabFocusRequester.tryRequestFocus() }
|
LaunchedEffect(Unit) { firstTabFocusRequester.tryRequestFocus() }
|
||||||
|
|
||||||
if (uiPrefs.rememberSelectedTab) {
|
|
||||||
LaunchedEffect(selectedTabIndex) {
|
LaunchedEffect(selectedTabIndex) {
|
||||||
viewModel.preferenceDataStore.updateData {
|
viewModel.saveRememberedTab(preferences, destination.itemId, selectedTabIndex)
|
||||||
preferences.appPreferences.rememberTab(destination.itemId, selectedTabIndex)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
val onClickItem = { item: BaseItem ->
|
val onClickItem = { item: BaseItem ->
|
||||||
viewModel.navigationManager.navigateTo(item.destination())
|
viewModel.navigationManager.navigateTo(item.destination())
|
||||||
|
|
@ -210,7 +200,7 @@ fun CollectionFolderLiveTv(
|
||||||
if (folderIndex in folders.indices) {
|
if (folderIndex in folders.indices) {
|
||||||
CollectionFolderGrid(
|
CollectionFolderGrid(
|
||||||
preferences = preferences,
|
preferences = preferences,
|
||||||
onClickItem = { viewModel.navigationManager.navigateTo(it.destination()) },
|
onClickItem = onClickItem,
|
||||||
itemId = folders[folderIndex].id,
|
itemId = folders[folderIndex].id,
|
||||||
item = null,
|
item = null,
|
||||||
initialFilter = GetItemsFilter(),
|
initialFilter = GetItemsFilter(),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue