domain: neutral StreamKind for media streams (phase 4d)

Add StreamKind enum (audio/video/subtitle/other) to the domain module with
a total stream_kind_from_jellyfin mapper. MediaStream gains a kind field
(dual-carry), populated at the mapping seam. Frontend VideoPlayer track/
subtitle selection and the channel-video check now use stream.kind instead
of the Jellyfin stream.type string.

Rust 456 (+ stream_kinds_map test), frontend 644, check clean.
This commit is contained in:
2026-07-23 22:11:31 +02:00
parent ec8a7610f5
commit 1968c06172
8 changed files with 68 additions and 9 deletions
+1 -2
View File
@@ -111,8 +111,7 @@
function isVideoChannelItem(item: MediaItem): boolean {
return (
item.kind === "channelItem" &&
// stream.type is Jellyfin stream vocabulary (migrated in a later phase).
(item.mediaStreams?.some((s) => s.type === "Video") ?? false)
(item.mediaStreams?.some((s) => s.kind === "video") ?? false)
);
}