Use ApiRequestPager

This commit is contained in:
Damontecres 2025-10-02 16:45:49 -04:00
parent 9265a06fd7
commit 41e3a19cd4
No known key found for this signature in database
5 changed files with 25 additions and 157 deletions

View file

@ -52,7 +52,6 @@ import com.github.damontecres.dolphin.ui.playback.isForwardButton
import com.github.damontecres.dolphin.ui.playback.isPlayKeyUp
import com.github.damontecres.dolphin.ui.tryRequestFocus
import com.github.damontecres.dolphin.util.ExceptionHandler
import com.github.damontecres.dolphin.util.ItemPager
import kotlinx.coroutines.launch
import timber.log.Timber
import kotlin.math.max
@ -61,7 +60,7 @@ private const val DEBUG = false
@Composable
fun CardGrid(
pager: ItemPager,
pager: List<BaseItem?>,
itemOnClick: (BaseItem) -> Unit,
longClicker: (BaseItem) -> Unit,
letterPosition: suspend (Char) -> Int,

View file

@ -16,8 +16,9 @@ import com.github.damontecres.dolphin.preferences.UserPreferences
import com.github.damontecres.dolphin.ui.OneTimeLaunchedEffect
import com.github.damontecres.dolphin.ui.nav.Destination
import com.github.damontecres.dolphin.ui.nav.NavigationManager
import com.github.damontecres.dolphin.util.ApiRequestPager
import com.github.damontecres.dolphin.util.ExceptionHandler
import com.github.damontecres.dolphin.util.ItemPager
import com.github.damontecres.dolphin.util.GetItemsRequestHandler
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
@ -38,7 +39,7 @@ class CollectionFolderViewModel
constructor(
api: ApiClient,
) : ItemViewModel<Library>(api) {
val pager = MutableLiveData<ItemPager?>()
val pager = MutableLiveData<ApiRequestPager<GetItemsRequest>?>()
override fun init(
itemId: UUID,
@ -81,7 +82,8 @@ class CollectionFolderViewModel
sortOrder = listOf(SortOrder.ASCENDING),
fields = listOf(ItemFields.PRIMARY_IMAGE_ASPECT_RATIO),
)
val newPager = ItemPager(api, request, viewModelScope)
val newPager =
ApiRequestPager(api, request, GetItemsRequestHandler, viewModelScope)
newPager.init()
pager.value = newPager
}
@ -162,7 +164,7 @@ fun TVShowCollectionDetails(
navigationManager: NavigationManager,
library: Library,
item: BaseItem,
pager: ItemPager,
pager: List<BaseItem?>,
modifier: Modifier = Modifier,
) {
val gridFocusRequester = remember { FocusRequester() }

View file

@ -21,8 +21,9 @@ import com.github.damontecres.dolphin.preferences.UserPreferences
import com.github.damontecres.dolphin.ui.cards.ItemRow
import com.github.damontecres.dolphin.ui.nav.Destination
import com.github.damontecres.dolphin.ui.nav.NavigationManager
import com.github.damontecres.dolphin.util.ApiRequestPager
import com.github.damontecres.dolphin.util.ExceptionHandler
import com.github.damontecres.dolphin.util.ItemPager
import com.github.damontecres.dolphin.util.GetItemsRequestHandler
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
@ -60,7 +61,13 @@ class SeasonViewModel
fields = listOf(ItemFields.PRIMARY_IMAGE_ASPECT_RATIO, ItemFields.CHILD_COUNT),
)
val pager =
ItemPager(api, request, viewModelScope, itemCount = item.data.childCount)
ApiRequestPager(
api,
request,
GetItemsRequestHandler,
viewModelScope,
itemCount = item.data.childCount,
)
pager.init()
episodes.value = pager
}

View file

@ -15,13 +15,12 @@ import com.github.damontecres.dolphin.data.model.BaseItem
import com.github.damontecres.dolphin.data.model.Video
import com.github.damontecres.dolphin.preferences.UserPreferences
import com.github.damontecres.dolphin.ui.cards.ItemRow
import com.github.damontecres.dolphin.ui.indexOfFirstOrNull
import com.github.damontecres.dolphin.ui.nav.Destination
import com.github.damontecres.dolphin.ui.nav.NavigationManager
import com.github.damontecres.dolphin.util.ApiRequestPager
import com.github.damontecres.dolphin.util.ExceptionHandler
import com.github.damontecres.dolphin.util.GetEpisodesRequestHandler
import com.github.damontecres.dolphin.util.ItemPager
import com.github.damontecres.dolphin.util.GetItemsRequestHandler
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Deferred
import kotlinx.coroutines.Job
@ -71,7 +70,13 @@ class SeriesViewModel
),
)
val pager =
ItemPager(api, request, viewModelScope, itemCount = item.data.childCount)
ApiRequestPager(
api,
request,
GetItemsRequestHandler,
viewModelScope,
itemCount = item.data.childCount,
)
pager.init()
seasons.value = pager
Timber.v("Loaded ${pager.size} seasons for series ${item.id}")
@ -94,10 +99,7 @@ class SeriesViewModel
viewModelScope.launch(ExceptionHandler()) {
init(itemId, potential).join()
season?.let { seasonNum ->
val targetSeasonPosition =
(seasons.value!! as ItemPager)
.toBlockingList()
.indexOfFirstOrNull { it.indexNumber == seasonNum }
// TODO map season number to index in list
loadEpisodes(seasonNum)
}
}