Wire up search page to discover items

This commit is contained in:
Damontecres 2025-12-23 18:38:22 -05:00
parent d814d533ab
commit ddda10f3a1
No known key found for this signature in database
2 changed files with 28 additions and 8 deletions

View file

@ -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 {

View file

@ -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 ->