mirror of
https://github.com/JustinZeus/Wholphin.git
synced 2026-07-08 15:50:16 +02:00
Add default sort option for collections (#337)
Adds a "default" sort option for collections/boxsets. This makes the app request no sort at all and leaves it up to the server to order the items. Fixes #83
This commit is contained in:
parent
8bc6fce0cb
commit
7f50cd83ee
5 changed files with 51 additions and 25 deletions
|
|
@ -88,7 +88,6 @@ import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.delay
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.jellyfin.sdk.api.client.ApiClient
|
import org.jellyfin.sdk.api.client.ApiClient
|
||||||
|
|
@ -154,8 +153,8 @@ class CollectionFolderViewModel
|
||||||
}
|
}
|
||||||
|
|
||||||
val sortAndDirection =
|
val sortAndDirection =
|
||||||
initialSortAndDirection
|
libraryDisplayInfo?.sortAndDirection
|
||||||
?: libraryDisplayInfo?.sortAndDirection
|
?: initialSortAndDirection
|
||||||
?: SortAndDirection.DEFAULT
|
?: SortAndDirection.DEFAULT
|
||||||
|
|
||||||
val filterToUse =
|
val filterToUse =
|
||||||
|
|
@ -233,7 +232,6 @@ class CollectionFolderViewModel
|
||||||
this@CollectionFolderViewModel.sortAndDirection.value = sortAndDirection
|
this@CollectionFolderViewModel.sortAndDirection.value = sortAndDirection
|
||||||
this@CollectionFolderViewModel.filter.value = filter
|
this@CollectionFolderViewModel.filter.value = filter
|
||||||
}
|
}
|
||||||
delay(1000)
|
|
||||||
val newPager = createPager(sortAndDirection, recursive, filter, useSeriesForPrimary)
|
val newPager = createPager(sortAndDirection, recursive, filter, useSeriesForPrimary)
|
||||||
newPager.init()
|
newPager.init()
|
||||||
if (newPager.isNotEmpty()) newPager.getBlocking(0)
|
if (newPager.isNotEmpty()) newPager.getBlocking(0)
|
||||||
|
|
@ -270,22 +268,26 @@ class CollectionFolderViewModel
|
||||||
excludeItemIds = item?.let { listOf(item.id) },
|
excludeItemIds = item?.let { listOf(item.id) },
|
||||||
sortBy =
|
sortBy =
|
||||||
buildList {
|
buildList {
|
||||||
add(sortAndDirection.sort)
|
if (sortAndDirection.sort != ItemSortBy.DEFAULT) {
|
||||||
if (sortAndDirection.sort != ItemSortBy.SORT_NAME) {
|
add(sortAndDirection.sort)
|
||||||
add(ItemSortBy.SORT_NAME)
|
if (sortAndDirection.sort != ItemSortBy.SORT_NAME) {
|
||||||
}
|
add(ItemSortBy.SORT_NAME)
|
||||||
if (item?.data?.collectionType == CollectionType.MOVIES) {
|
}
|
||||||
add(ItemSortBy.PRODUCTION_YEAR)
|
if (item?.data?.collectionType == CollectionType.MOVIES) {
|
||||||
|
add(ItemSortBy.PRODUCTION_YEAR)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
sortOrder =
|
sortOrder =
|
||||||
buildList {
|
buildList {
|
||||||
add(sortAndDirection.direction)
|
if (sortAndDirection.sort != ItemSortBy.DEFAULT) {
|
||||||
if (sortAndDirection.sort != ItemSortBy.SORT_NAME) {
|
add(sortAndDirection.direction)
|
||||||
add(SortOrder.ASCENDING)
|
if (sortAndDirection.sort != ItemSortBy.SORT_NAME) {
|
||||||
}
|
add(SortOrder.ASCENDING)
|
||||||
if (item?.data?.collectionType == CollectionType.MOVIES) {
|
}
|
||||||
add(SortOrder.ASCENDING)
|
if (item?.data?.collectionType == CollectionType.MOVIES) {
|
||||||
|
add(SortOrder.ASCENDING)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
fields = SlimItemFields,
|
fields = SlimItemFields,
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,21 @@ val PlaylistSortOptions =
|
||||||
ItemSortBy.RANDOM,
|
ItemSortBy.RANDOM,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val BoxSetSortOptions =
|
||||||
|
listOf(
|
||||||
|
ItemSortBy.DEFAULT,
|
||||||
|
ItemSortBy.SORT_NAME,
|
||||||
|
ItemSortBy.PREMIERE_DATE,
|
||||||
|
ItemSortBy.DATE_CREATED,
|
||||||
|
ItemSortBy.DATE_PLAYED,
|
||||||
|
ItemSortBy.COMMUNITY_RATING,
|
||||||
|
ItemSortBy.CRITIC_RATING,
|
||||||
|
ItemSortBy.OFFICIAL_RATING,
|
||||||
|
ItemSortBy.RUNTIME,
|
||||||
|
ItemSortBy.PLAY_COUNT,
|
||||||
|
ItemSortBy.RANDOM,
|
||||||
|
)
|
||||||
|
|
||||||
@StringRes
|
@StringRes
|
||||||
fun getStringRes(sort: ItemSortBy): Int =
|
fun getStringRes(sort: ItemSortBy): Int =
|
||||||
when (sort) {
|
when (sort) {
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,11 @@ import com.github.damontecres.wholphin.data.model.GetItemsFilter
|
||||||
import com.github.damontecres.wholphin.preferences.UserPreferences
|
import com.github.damontecres.wholphin.preferences.UserPreferences
|
||||||
import com.github.damontecres.wholphin.ui.components.CollectionFolderGrid
|
import com.github.damontecres.wholphin.ui.components.CollectionFolderGrid
|
||||||
import com.github.damontecres.wholphin.ui.components.CollectionFolderGridParameters
|
import com.github.damontecres.wholphin.ui.components.CollectionFolderGridParameters
|
||||||
import com.github.damontecres.wholphin.ui.data.MovieSortOptions
|
import com.github.damontecres.wholphin.ui.data.BoxSetSortOptions
|
||||||
|
import com.github.damontecres.wholphin.ui.data.SortAndDirection
|
||||||
import com.github.damontecres.wholphin.ui.preferences.PreferencesViewModel
|
import com.github.damontecres.wholphin.ui.preferences.PreferencesViewModel
|
||||||
|
import org.jellyfin.sdk.model.api.ItemSortBy
|
||||||
|
import org.jellyfin.sdk.model.api.SortOrder
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -37,7 +40,8 @@ fun CollectionFolderBoxSet(
|
||||||
initialFilter = filter,
|
initialFilter = filter,
|
||||||
showTitle = showHeader,
|
showTitle = showHeader,
|
||||||
recursive = recursive,
|
recursive = recursive,
|
||||||
sortOptions = MovieSortOptions,
|
sortOptions = BoxSetSortOptions,
|
||||||
|
initialSortAndDirection = SortAndDirection(ItemSortBy.DEFAULT, SortOrder.ASCENDING),
|
||||||
modifier =
|
modifier =
|
||||||
modifier
|
modifier
|
||||||
.padding(start = 16.dp),
|
.padding(start = 16.dp),
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ import com.github.damontecres.wholphin.ui.components.CollectionFolderGrid
|
||||||
import com.github.damontecres.wholphin.ui.components.CollectionFolderGridParameters
|
import com.github.damontecres.wholphin.ui.components.CollectionFolderGridParameters
|
||||||
import com.github.damontecres.wholphin.ui.data.VideoSortOptions
|
import com.github.damontecres.wholphin.ui.data.VideoSortOptions
|
||||||
import com.github.damontecres.wholphin.ui.preferences.PreferencesViewModel
|
import com.github.damontecres.wholphin.ui.preferences.PreferencesViewModel
|
||||||
|
import org.jellyfin.sdk.model.api.ItemSortBy
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -29,6 +30,7 @@ fun CollectionFolderGeneric(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
filter: GetItemsFilter = GetItemsFilter(),
|
filter: GetItemsFilter = GetItemsFilter(),
|
||||||
filterOptions: List<ItemFilterBy<*>> = DefaultFilterOptions,
|
filterOptions: List<ItemFilterBy<*>> = DefaultFilterOptions,
|
||||||
|
sortOptions: List<ItemSortBy> = VideoSortOptions,
|
||||||
preferencesViewModel: PreferencesViewModel = hiltViewModel(),
|
preferencesViewModel: PreferencesViewModel = hiltViewModel(),
|
||||||
) {
|
) {
|
||||||
var showHeader by remember { mutableStateOf(true) }
|
var showHeader by remember { mutableStateOf(true) }
|
||||||
|
|
@ -47,7 +49,7 @@ fun CollectionFolderGeneric(
|
||||||
initialFilter = filter,
|
initialFilter = filter,
|
||||||
showTitle = showHeader,
|
showTitle = showHeader,
|
||||||
recursive = recursive,
|
recursive = recursive,
|
||||||
sortOptions = VideoSortOptions,
|
sortOptions = sortOptions,
|
||||||
modifier =
|
modifier =
|
||||||
modifier
|
modifier
|
||||||
.padding(start = 16.dp),
|
.padding(start = 16.dp),
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import com.github.damontecres.wholphin.data.filter.DefaultForGenresFilterOptions
|
||||||
import com.github.damontecres.wholphin.preferences.UserPreferences
|
import com.github.damontecres.wholphin.preferences.UserPreferences
|
||||||
import com.github.damontecres.wholphin.ui.components.ItemGrid
|
import com.github.damontecres.wholphin.ui.components.ItemGrid
|
||||||
import com.github.damontecres.wholphin.ui.components.LicenseInfo
|
import com.github.damontecres.wholphin.ui.components.LicenseInfo
|
||||||
|
import com.github.damontecres.wholphin.ui.data.MovieSortOptions
|
||||||
import com.github.damontecres.wholphin.ui.detail.CollectionFolderBoxSet
|
import com.github.damontecres.wholphin.ui.detail.CollectionFolderBoxSet
|
||||||
import com.github.damontecres.wholphin.ui.detail.CollectionFolderGeneric
|
import com.github.damontecres.wholphin.ui.detail.CollectionFolderGeneric
|
||||||
import com.github.damontecres.wholphin.ui.detail.CollectionFolderLiveTv
|
import com.github.damontecres.wholphin.ui.detail.CollectionFolderLiveTv
|
||||||
|
|
@ -239,12 +240,14 @@ fun CollectionFolder(
|
||||||
)
|
)
|
||||||
|
|
||||||
CollectionType.BOXSETS ->
|
CollectionType.BOXSETS ->
|
||||||
CollectionFolderBoxSet(
|
CollectionFolderGeneric(
|
||||||
preferences,
|
preferences = preferences,
|
||||||
destination.itemId,
|
itemId = destination.itemId,
|
||||||
destination.item,
|
usePosters = true,
|
||||||
false,
|
recursive = false,
|
||||||
modifier,
|
playEnabled = false,
|
||||||
|
modifier = modifier,
|
||||||
|
sortOptions = MovieSortOptions,
|
||||||
)
|
)
|
||||||
|
|
||||||
CollectionType.PLAYLISTS ->
|
CollectionType.PLAYLISTS ->
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue