Merge branch 'master' into feat/i18n

This commit is contained in:
Simon Caron
2025-01-03 15:23:17 -05:00
52 changed files with 1833 additions and 1318 deletions

View File

@@ -3,6 +3,9 @@ import * as DropdownMenu from "zeego/dropdown-menu";
import { Text } from "../common/Text";
import { useMedia } from "./MediaContext";
import { Switch } from "react-native-gesture-handler";
import { ListGroup } from "../list/ListGroup";
import { ListItem } from "../list/ListItem";
import { Ionicons } from "@expo/vector-icons";
import { SubtitlePlaybackMode } from "@jellyfin/sdk/lib/generated-client";
import { useTranslation } from "react-i18next";
@@ -25,26 +28,27 @@ export const SubtitleToggles: React.FC<Props> = ({ ...props }) => {
];
return (
<View>
<Text className="text-lg font-bold mb-2">{t("home.settings.subtitles.subtitle_title")}</Text>
<View className="flex flex-col rounded-xl mb-4 overflow-hidden divide-y-2 divide-solid divide-neutral-800">
<View
className={`
flex flex-row items-center space-x-2 justify-between bg-neutral-900 p-4
`}
>
<View className="flex flex-col shrink">
<Text className="font-semibold">{t("home.settings.subtitles.subtitle_language")}</Text>
<Text className="text-xs opacity-50">
{t("home.settings.subtitles.subtitle_language_hint")}
</Text>
</View>
<View {...props}>
<ListGroup
title={t("home.settings.subtitles.subtitle_title")}
description={
<Text className="text-[#8E8D91] text-xs">
{t("home.settings.subtitles.subtitle_hint")}
</Text>
}
>
<ListItem title={t("home.settings.subtitles.subtitle_language")}>
<DropdownMenu.Root>
<DropdownMenu.Trigger>
<TouchableOpacity className="bg-neutral-800 rounded-lg border-neutral-900 border px-3 py-2 flex flex-row items-center justify-between">
<Text>
<TouchableOpacity className="flex flex-row items-center justify-between py-3 pl-3">
<Text className="mr-1 text-[#8E8D91]">
{settings?.defaultSubtitleLanguage?.DisplayName || "None"}
</Text>
<Ionicons
name="chevron-expand-sharp"
size={18}
color="#5A5960"
/>
</TouchableOpacity>
</DropdownMenu.Trigger>
<DropdownMenu.Content
@@ -83,23 +87,20 @@ export const SubtitleToggles: React.FC<Props> = ({ ...props }) => {
))}
</DropdownMenu.Content>
</DropdownMenu.Root>
</View>
</ListItem>
<View
className={`
flex flex-row items-center space-x-2 justify-between bg-neutral-900 p-4
`}
>
<View className="flex flex-col shrink">
<Text className="font-semibold">{t("home.settings.subtitles.subtitle_mode")}</Text>
<Text className="text-xs opacity-50 mr-2">
{t("home.settings.subtitles.subtitle_mode_hint")}
</Text>
</View>
<ListItem title={t("home.settings.subtitles.subtitle_mode")}>
<DropdownMenu.Root>
<DropdownMenu.Trigger>
<TouchableOpacity className="bg-neutral-800 rounded-lg border-neutral-900 border px-3 py-2 flex flex-row items-center justify-between">
<Text>{settings?.subtitleMode || "Loading"}</Text>
<TouchableOpacity className="flex flex-row items-center justify-between py-3 pl-3">
<Text className="mr-1 text-[#8E8D91]">
{settings?.subtitleMode || "Loading"}
</Text>
<Ionicons
name="chevron-expand-sharp"
size={18}
color="#5A5960"
/>
</TouchableOpacity>
</DropdownMenu.Trigger>
<DropdownMenu.Content
@@ -126,38 +127,18 @@ export const SubtitleToggles: React.FC<Props> = ({ ...props }) => {
))}
</DropdownMenu.Content>
</DropdownMenu.Root>
</View>
</ListItem>
<View className="flex flex-col">
<View className="flex flex-row items-center justify-between bg-neutral-900 p-4">
<View className="flex flex-col">
<Text className="font-semibold">
{t("home.settings.subtitles.set_subtitle_track")}
</Text>
<Text className="text-xs opacity-50 min max-w-[85%]">
{t("home.settings.subtitles.set_subtitle_track_hint")}
</Text>
</View>
<Switch
value={settings.rememberSubtitleSelections}
onValueChange={(value) =>
updateSettings({ rememberSubtitleSelections: value })
}
/>
</View>
</View>
<ListItem title={t("home.settings.subtitles.set_subtitle_track")}>
<Switch
value={settings.rememberSubtitleSelections}
onValueChange={(value) =>
updateSettings({ rememberSubtitleSelections: value })
}
/>
</ListItem>
<View
className={`
flex flex-row items-center space-x-2 justify-between bg-neutral-900 p-4
`}
>
<View className="flex flex-col shrink">
<Text className="font-semibold">{t("home.settings.subtitles.subtitle_size")}</Text>
<Text className="text-xs opacity-50">
{t("home.settings.subtitles.subtitle_size_hint")}
</Text>
</View>
<ListItem title={t("home.settings.subtitles.subtitle_size")}>
<View className="flex flex-row items-center">
<TouchableOpacity
onPress={() =>
@@ -169,7 +150,7 @@ export const SubtitleToggles: React.FC<Props> = ({ ...props }) => {
>
<Text>-</Text>
</TouchableOpacity>
<Text className="w-12 h-8 bg-neutral-800 first-letter:px-3 py-2 flex items-center justify-center">
<Text className="w-12 h-8 bg-neutral-800 px-3 py-2 flex items-center justify-center">
{settings.subtitleSize}
</Text>
<TouchableOpacity
@@ -183,8 +164,8 @@ export const SubtitleToggles: React.FC<Props> = ({ ...props }) => {
<Text>+</Text>
</TouchableOpacity>
</View>
</View>
</View>
</ListItem>
</ListGroup>
</View>
);
};