From 27b0c753bb00613bec37a38948065122401df58e Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Tue, 21 May 2024 01:03:30 +0200 Subject: [PATCH] Fix srt selection when switching mode (#508) --- front/packages/primitives/src/snackbar.tsx | 2 +- front/packages/ui/src/player/state.tsx | 6 +++++- front/packages/ui/src/player/video.web.tsx | 5 ++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/front/packages/primitives/src/snackbar.tsx b/front/packages/primitives/src/snackbar.tsx index aefff109..b8680895 100644 --- a/front/packages/primitives/src/snackbar.tsx +++ b/front/packages/primitives/src/snackbar.tsx @@ -25,7 +25,7 @@ import { percent, px } from "yoshiki/native"; import { Button } from "./button"; import { imageBorderRadius } from "./constants"; import { P } from "./text"; -import { ContrastArea, SwitchVariant } from "./themes"; +import { SwitchVariant } from "./themes"; import { ts } from "./utils"; export type Snackbar = { diff --git a/front/packages/ui/src/player/state.tsx b/front/packages/ui/src/player/state.tsx index 90d3e361..dc20ad47 100644 --- a/front/packages/ui/src/player/state.tsx +++ b/front/packages/ui/src/player/state.tsx @@ -177,7 +177,11 @@ export const Video = memo(function Video({ useEffect(() => { if (!subtitles) return; setSubtitle((subtitle) => { - const subRet = subtitle ? subtitles.find((x) => x.language === subtitle.language) : null; + const subRet = subtitle + ? subtitles.find( + (x) => x.language === subtitle.language && x.isForced === subtitle.isForced, + ) + : null; if (subRet) return subRet; if (!defaultSubLanguage) return null; if (defaultSubLanguage === "default") return subtitles.find((x) => x.isDefault) ?? null; diff --git a/front/packages/ui/src/player/video.web.tsx b/front/packages/ui/src/player/video.web.tsx index 4a3d4bba..b7f744d9 100644 --- a/front/packages/ui/src/player/video.web.tsx +++ b/front/packages/ui/src/player/video.web.tsx @@ -274,6 +274,7 @@ const useSubtitle = ( ) => { const htmlTrack = useRef(); const subOcto = useRef(); + const mode = useAtom(playModeAtom); useEffect(() => { if (!player.current) return; @@ -334,7 +335,9 @@ const useSubtitle = ( subOcto.current.setTrackByUrl(value.link); } } - }, [player, value, fonts]); + // also include mode because srt get's disabled when the mode change (no idea why) + mode; + }, [player.current, value, fonts, mode]); useEffect(() => { return () => { if (subOcto.current) subOcto.current.destroy();