From 487ac398e581f29d5cad03c19ab19c59de613c1c Mon Sep 17 00:00:00 2001 From: Alex Kim Date: Wed, 11 Dec 2024 04:48:53 +1100 Subject: [PATCH] Added subtitle mode in options --- components/settings/MediaContext.tsx | 6 ++- components/settings/SubtitleToggles.tsx | 56 ++++++++++++++++++++++++- utils/atoms/settings.ts | 7 +++- 3 files changed, 64 insertions(+), 5 deletions(-) diff --git a/components/settings/MediaContext.tsx b/components/settings/MediaContext.tsx index 70aefbab..251eeade 100644 --- a/components/settings/MediaContext.tsx +++ b/components/settings/MediaContext.tsx @@ -11,8 +11,8 @@ import { import { useQuery, useQueryClient } from "@tanstack/react-query"; interface MediaContextType { - settings: any; - updateSettings: any; + settings: Settings | null; + updateSettings: (update: Partial) => void; user: UserDto | undefined; cultures: CultureDto[]; } @@ -69,6 +69,8 @@ export const MediaProvider = ({ children }: { children: ReactNode }) => { settings?.defaultSubtitleLanguage?.ThreeLetterISOLanguageName || ""; + updatePayload.SubtitleMode = update?.subtitleMode; + console.log("updatePayload", updatePayload); updateUserConfiguration(updatePayload); diff --git a/components/settings/SubtitleToggles.tsx b/components/settings/SubtitleToggles.tsx index cf3bb6dc..124bffb6 100644 --- a/components/settings/SubtitleToggles.tsx +++ b/components/settings/SubtitleToggles.tsx @@ -1,9 +1,9 @@ -import { useSettings } from "@/utils/atoms/settings"; import { TouchableOpacity, View, ViewProps } from "react-native"; import * as DropdownMenu from "zeego/dropdown-menu"; import { Text } from "../common/Text"; import { useMedia } from "./MediaContext"; import { Switch } from "react-native-gesture-handler"; +import { SubtitlePlaybackMode } from "@jellyfin/sdk/lib/generated-client"; interface Props extends ViewProps {} @@ -11,9 +11,16 @@ export const SubtitleToggles: React.FC = ({ ...props }) => { const media = useMedia(); const { settings, updateSettings } = media; const cultures = media.cultures; - if (!settings) return null; + const subtitleModes = [ + SubtitlePlaybackMode.Default, + SubtitlePlaybackMode.Smart, + SubtitlePlaybackMode.OnlyForced, + SubtitlePlaybackMode.Always, + SubtitlePlaybackMode.None, + ]; + return ( Subtitle @@ -75,6 +82,51 @@ export const SubtitleToggles: React.FC = ({ ...props }) => { + + + Subtitle Mode + + Subtitles are loaded based on the default and forced flags in the + embedded metadata. Language preferences are considered when + multiple options are available. + + + + + + {settings?.subtitleMode || "Loading"} + + + + Subtitle Mode + {subtitleModes?.map((l) => ( + { + updateSettings({ + subtitleMode: l, + }); + }} + > + {l} + + ))} + + + + { }, defaultAudioLanguage: null, defaultSubtitleLanguage: null, + subtitleMode: SubtitlePlaybackMode.Default, showHomeTitles: true, defaultVideoOrientation: ScreenOrientation.OrientationLock.DEFAULT, forwardSkipTime: 30,