From f2367d3f6820355d8d8fb84e7de75df59e695a93 Mon Sep 17 00:00:00 2001 From: Fredrik Burmester Date: Thu, 21 Nov 2024 10:24:26 +0100 Subject: [PATCH] fix: show correct list of subs --- components/video-player/Controls.tsx | 36 +++++++++++++++------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/components/video-player/Controls.tsx b/components/video-player/Controls.tsx index 4bffeedb..e9a26f35 100644 --- a/components/video-player/Controls.tsx +++ b/components/video-player/Controls.tsx @@ -339,6 +339,7 @@ export const Controls: React.FC = ({ const fetchTracks = async () => { if (getSubtitleTracks) { const subtitles = await getSubtitleTracks(); + console.log("Getting embeded subtitles...", subtitles); setSubtitleTracks(subtitles); } if (getAudioTracks) { @@ -365,36 +366,29 @@ export const Controls: React.FC = ({ const allSubtitleTracks = useMemo(() => { const embeddedSubs = - subtitleTracks?.map((s) => ({ - name: s.name, - index: s.index, - isExternal: false, - deliveryUrl: undefined, - })) || []; + subtitleTracks + ?.map((s) => ({ + name: s.name, + index: s.index, + deliveryUrl: undefined, + })) + .filter((sub) => !sub.name.endsWith("[External]")) || []; const externalSubs = mediaSource?.MediaStreams?.filter( (stream) => stream.Type === "Subtitle" && !!stream.DeliveryUrl ).map((s) => ({ - name: s.DisplayTitle!, + name: s.DisplayTitle! + " [External]", index: s.Index!, - isExternal: true, deliveryUrl: s.DeliveryUrl, })) || []; - // Create a Set of embedded subtitle names for quick lookup - const embeddedSubNames = new Set(embeddedSubs.map((sub) => sub.name)); - - // Filter out external subs that have the same name as embedded subs - const uniqueExternalSubs = externalSubs.filter( - (sub) => !embeddedSubNames.has(sub.name) - ); // Combine embedded and unique external subs - return [...embeddedSubs, ...uniqueExternalSubs] as ( + return [...embeddedSubs, ...externalSubs] as ( | EmbeddedSubtitle | ExternalSubtitle )[]; - }, [item, isVideoLoaded, subtitleTracks, mediaSource]); + }, [item, isVideoLoaded, subtitleTracks, mediaSource?.MediaStreams]); return ( = ({ api?.basePath + sub.deliveryUrl, sub.name ); + + console.log( + "Set sub url: ", + api?.basePath + sub.deliveryUrl + ); } else { + console.log("Set sub index: ", sub.index); setSubtitleTrack && setSubtitleTrack(sub.index); } + + console.log("Subtitle: ", sub); }} >