mirror of
https://github.com/JustinZeus/Wholphin.git
synced 2026-07-08 23:51:21 +02:00
Wire up search page to discover items
This commit is contained in:
parent
d814d533ab
commit
ddda10f3a1
2 changed files with 28 additions and 8 deletions
|
|
@ -10,23 +10,26 @@ import com.github.damontecres.wholphin.services.SeerrSearchResult
|
||||||
import kotlinx.serialization.SerialName
|
import kotlinx.serialization.SerialName
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.UseSerializers
|
import kotlinx.serialization.UseSerializers
|
||||||
|
import org.jellyfin.sdk.model.api.BaseItemKind
|
||||||
import org.jellyfin.sdk.model.serializer.UUIDSerializer
|
import org.jellyfin.sdk.model.serializer.UUIDSerializer
|
||||||
import org.jellyfin.sdk.model.serializer.toUUIDOrNull
|
import org.jellyfin.sdk.model.serializer.toUUIDOrNull
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
enum class SeerrItemType {
|
enum class SeerrItemType(
|
||||||
|
val baseItemKind: BaseItemKind?,
|
||||||
|
) {
|
||||||
@SerialName("movie")
|
@SerialName("movie")
|
||||||
MOVIE,
|
MOVIE(BaseItemKind.MOVIE),
|
||||||
|
|
||||||
@SerialName("tv")
|
@SerialName("tv")
|
||||||
TV,
|
TV(BaseItemKind.SERIES),
|
||||||
|
|
||||||
@SerialName("person")
|
@SerialName("person")
|
||||||
PERSON,
|
PERSON(BaseItemKind.PERSON),
|
||||||
|
|
||||||
@SerialName("unknown")
|
@SerialName("unknown")
|
||||||
UNKNOWN,
|
UNKNOWN(null),
|
||||||
;
|
;
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@ import com.github.damontecres.wholphin.ui.data.RowColumn
|
||||||
import com.github.damontecres.wholphin.ui.ifElse
|
import com.github.damontecres.wholphin.ui.ifElse
|
||||||
import com.github.damontecres.wholphin.ui.isNotNullOrBlank
|
import com.github.damontecres.wholphin.ui.isNotNullOrBlank
|
||||||
import com.github.damontecres.wholphin.ui.launchIO
|
import com.github.damontecres.wholphin.ui.launchIO
|
||||||
|
import com.github.damontecres.wholphin.ui.nav.Destination
|
||||||
import com.github.damontecres.wholphin.ui.rememberPosition
|
import com.github.damontecres.wholphin.ui.rememberPosition
|
||||||
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
|
||||||
|
|
@ -324,8 +325,20 @@ fun SearchPage(
|
||||||
rowIndex = SEERR_ROW,
|
rowIndex = SEERR_ROW,
|
||||||
position = position,
|
position = position,
|
||||||
focusRequester = focusRequester,
|
focusRequester = focusRequester,
|
||||||
onClickItem = { index, item ->
|
onClickItem = { _, _ ->
|
||||||
// TODO seerr
|
// no-op
|
||||||
|
},
|
||||||
|
onClickDiscover = { _, item ->
|
||||||
|
val dest =
|
||||||
|
if (item.jellyfinItemId != null && item.type.baseItemKind != null) {
|
||||||
|
Destination.MediaItem(
|
||||||
|
itemId = item.jellyfinItemId,
|
||||||
|
type = item.type.baseItemKind,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
Destination.DiscoveredItem(item)
|
||||||
|
}
|
||||||
|
viewModel.navigationManager.navigateTo(dest)
|
||||||
},
|
},
|
||||||
onClickPosition = { position = it },
|
onClickPosition = { position = it },
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
|
|
@ -342,6 +355,7 @@ fun LazyListScope.searchResultRow(
|
||||||
onClickItem: (Int, BaseItem) -> Unit,
|
onClickItem: (Int, BaseItem) -> Unit,
|
||||||
onClickPosition: (RowColumn) -> Unit,
|
onClickPosition: (RowColumn) -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
|
onClickDiscover: ((Int, DiscoverItem) -> Unit)? = null,
|
||||||
cardContent: @Composable (
|
cardContent: @Composable (
|
||||||
index: Int,
|
index: Int,
|
||||||
item: BaseItem?,
|
item: BaseItem?,
|
||||||
|
|
@ -419,7 +433,10 @@ fun LazyListScope.searchResultRow(
|
||||||
ItemRow(
|
ItemRow(
|
||||||
title = title,
|
title = title,
|
||||||
items = r.items,
|
items = r.items,
|
||||||
onClickItem = { index, item -> },
|
onClickItem = { index, item ->
|
||||||
|
onClickPosition.invoke(RowColumn(rowIndex, index))
|
||||||
|
onClickDiscover?.invoke(index, item)
|
||||||
|
},
|
||||||
onLongClickItem = { _, _ -> },
|
onLongClickItem = { _, _ -> },
|
||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
cardContent = { index: Int, item: DiscoverItem?, mod: Modifier, onClick: () -> Unit, onLongClick: () -> Unit ->
|
cardContent = { index: Int, item: DiscoverItem?, mod: Modifier, onClick: () -> Unit, onLongClick: () -> Unit ->
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue