Fix uuid serialization

This commit is contained in:
Damontecres 2025-10-18 19:56:15 -04:00
parent dc3193e2dc
commit 5bb46bf34b
No known key found for this signature in database
6 changed files with 18 additions and 38 deletions

View file

@ -1,11 +1,11 @@
@file:UseSerializers(UuidSerializer::class)
@file:UseSerializers(UUIDSerializer::class)
package com.github.damontecres.wholphin.data.model
import com.github.damontecres.wholphin.util.UuidSerializer
import kotlinx.serialization.Serializable
import kotlinx.serialization.UseSerializers
import org.jellyfin.sdk.model.api.request.GetItemsRequest
import org.jellyfin.sdk.model.serializer.UUIDSerializer
import java.util.UUID
@Serializable

View file

@ -1,4 +1,4 @@
@file:UseSerializers(UuidSerializer::class)
@file:UseSerializers(UUIDSerializer::class)
package com.github.damontecres.wholphin.data.model
@ -10,7 +10,6 @@ import com.github.damontecres.wholphin.data.JellyfinUser
import com.github.damontecres.wholphin.preferences.UserPreferences
import com.github.damontecres.wholphin.ui.isNotNullOrBlank
import com.github.damontecres.wholphin.ui.letNotEmpty
import com.github.damontecres.wholphin.util.UuidSerializer
import kotlinx.serialization.Serializable
import kotlinx.serialization.UseSerializers
import org.jellyfin.sdk.model.api.BaseItemDto
@ -18,6 +17,7 @@ import org.jellyfin.sdk.model.api.MediaSourceInfo
import org.jellyfin.sdk.model.api.MediaStream
import org.jellyfin.sdk.model.api.MediaStreamType
import org.jellyfin.sdk.model.api.SubtitlePlaybackMode
import org.jellyfin.sdk.model.serializer.UUIDSerializer
import org.jellyfin.sdk.model.serializer.toUUIDOrNull
import java.util.UUID

View file

@ -82,8 +82,10 @@ abstract class LoadingItemViewModel(
}
} catch (e: Exception) {
Timber.e(e, "Failed to load item $itemId")
item.value = null
loading.value = LoadingState.Error("Error loading item $itemId", e)
withContext(Dispatchers.Main) {
item.value = null
loading.value = LoadingState.Error("Error loading item $itemId", e)
}
}
}
}

View file

@ -104,12 +104,14 @@ class MovieViewModel
chosenStreams.value = result
}
}
people.value =
item.data.people
?.letNotEmpty { people ->
people.map { Person.fromDto(it, api) }
}.orEmpty()
chapters.value = Chapter.fromDto(item.data, api)
withContext(Dispatchers.Main) {
people.value =
item.data.people
?.letNotEmpty { people ->
people.map { Person.fromDto(it, api) }
}.orEmpty()
chapters.value = Chapter.fromDto(item.data, api)
}
}
}
}

View file

@ -1,4 +1,4 @@
@file:UseSerializers(UuidSerializer::class)
@file:UseSerializers(UUIDSerializer::class)
package com.github.damontecres.wholphin.ui.nav
@ -8,11 +8,11 @@ import com.github.damontecres.wholphin.data.model.GetItemsFilter
import com.github.damontecres.wholphin.data.model.ItemPlayback
import com.github.damontecres.wholphin.ui.detail.series.SeasonEpisode
import com.github.damontecres.wholphin.ui.preferences.PreferenceScreenOption
import com.github.damontecres.wholphin.util.UuidSerializer
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
import kotlinx.serialization.UseSerializers
import org.jellyfin.sdk.model.api.BaseItemKind
import org.jellyfin.sdk.model.serializer.UUIDSerializer
import java.util.UUID
/**

View file

@ -1,24 +0,0 @@
package com.github.damontecres.wholphin.util
import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import java.util.UUID
class UuidSerializer : KSerializer<UUID> {
override val descriptor: SerialDescriptor
get() = PrimitiveSerialDescriptor("UUID", PrimitiveKind.LONG)
override fun deserialize(decoder: Decoder): UUID = UUID(decoder.decodeLong(), decoder.decodeLong())
override fun serialize(
encoder: Encoder,
value: UUID,
) {
encoder.encodeLong(value.mostSignificantBits)
encoder.encodeLong(value.leastSignificantBits)
}
}