From e173d51dbb622fcbb23413fdf3843dce04433400 Mon Sep 17 00:00:00 2001 From: Fredrik Burmester Date: Wed, 4 Sep 2024 09:47:13 +0300 Subject: [PATCH] chore --- app/(auth)/(tabs)/(libraries)/[libraryId].tsx | 3 +- components/home/ScrollingCollectionList.tsx | 13 +- components/settings/MediaToggles.tsx | 150 ++++++++++++++++++ components/settings/SettingToggles.tsx | 128 ++------------- utils/atoms/settings.ts | 2 + 5 files changed, 173 insertions(+), 123 deletions(-) create mode 100644 components/settings/MediaToggles.tsx diff --git a/app/(auth)/(tabs)/(libraries)/[libraryId].tsx b/app/(auth)/(tabs)/(libraries)/[libraryId].tsx index 7e6b23f2..77f77978 100644 --- a/app/(auth)/(tabs)/(libraries)/[libraryId].tsx +++ b/app/(auth)/(tabs)/(libraries)/[libraryId].tsx @@ -11,7 +11,7 @@ import { FilterButton } from "@/components/filters/FilterButton"; import { ResetFiltersButton } from "@/components/filters/ResetFiltersButton"; import { ItemCardText } from "@/components/ItemCardText"; import { Loader } from "@/components/Loader"; -import MoviePoster from "@/components/posters/MoviePoster"; +import { ItemPoster } from "@/components/posters/ItemPoster"; import { apiAtom, userAtom } from "@/providers/JellyfinProvider"; import { genreFilterAtom, @@ -36,7 +36,6 @@ import { } from "@jellyfin/sdk/lib/utils/api"; import { FlashList } from "@shopify/flash-list"; import { useSafeAreaInsets } from "react-native-safe-area-context"; -import { ItemPoster } from "@/components/posters/ItemPoster"; const MemoizedTouchableItemRouter = React.memo(TouchableItemRouter); diff --git a/components/home/ScrollingCollectionList.tsx b/components/home/ScrollingCollectionList.tsx index ab4ef0ae..c65f027f 100644 --- a/components/home/ScrollingCollectionList.tsx +++ b/components/home/ScrollingCollectionList.tsx @@ -1,18 +1,18 @@ import { Text } from "@/components/common/Text"; import MoviePoster from "@/components/posters/MoviePoster"; +import { useSettings } from "@/utils/atoms/settings"; import { BaseItemDto } from "@jellyfin/sdk/lib/generated-client/models"; +import { + useQuery, + type QueryFunction, + type QueryKey, +} from "@tanstack/react-query"; import { View, ViewProps } from "react-native"; import ContinueWatchingPoster from "../ContinueWatchingPoster"; import { ItemCardText } from "../ItemCardText"; import { HorizontalScroll } from "../common/HorrizontalScroll"; import { TouchableItemRouter } from "../common/TouchableItemRouter"; -import { - type QueryKey, - useQuery, - type QueryFunction, -} from "@tanstack/react-query"; import SeriesPoster from "../posters/SeriesPoster"; -import { EpisodePoster } from "../posters/EpisodePoster"; interface Props extends ViewProps { title?: string | null; @@ -32,6 +32,7 @@ export const ScrollingCollectionList: React.FC = ({ queryKey, ...props }) => { + const [settings] = useSettings(); const { data, isLoading } = useQuery({ queryKey, queryFn, diff --git a/components/settings/MediaToggles.tsx b/components/settings/MediaToggles.tsx new file mode 100644 index 00000000..22b89c38 --- /dev/null +++ b/components/settings/MediaToggles.tsx @@ -0,0 +1,150 @@ +import { apiAtom, userAtom } from "@/providers/JellyfinProvider"; +import { + DefaultLanguageOption, + DownloadOptions, + useSettings, +} from "@/utils/atoms/settings"; +import { getItemsApi } from "@jellyfin/sdk/lib/utils/api"; +import { useQuery, useQueryClient } from "@tanstack/react-query"; +import { useAtom } from "jotai"; +import { + Linking, + Switch, + TouchableOpacity, + View, + ViewProps, +} from "react-native"; +import * as DropdownMenu from "zeego/dropdown-menu"; +import { Text } from "../common/Text"; +import { Loader } from "../Loader"; +import { Input } from "../common/Input"; +import { useState } from "react"; +import { Button } from "../Button"; + +const LANGUAGES: DefaultLanguageOption[] = [ + { label: "eng", value: "eng" }, + { + label: "sv", + value: "sv", + }, +]; + +interface Props extends ViewProps {} + +export const MediaToggles: React.FC = ({ ...props }) => { + const [settings, updateSettings] = useSettings(); + + return ( + + Media + + + + Audio language + + Choose a default audio language. + + + + + + {settings?.defaultAudioLanguage?.label || "None"} + + + + Languages + { + updateSettings({ + defaultAudioLanguage: null, + }); + }} + > + None + + {LANGUAGES.map((l) => ( + { + updateSettings({ + defaultAudioLanguage: l, + }); + }} + > + {l.label} + + ))} + + + + + + Subtitle language + + Choose a default subtitle language. + + + + + + + {settings?.defaultSubtitleLanguage?.label || "None"} + + + + + Languages + { + updateSettings({ + defaultSubtitleLanguage: null, + }); + }} + > + None + + {LANGUAGES.map((l) => ( + { + updateSettings({ + defaultSubtitleLanguage: l, + }); + }} + > + {l.label} + + ))} + + + + + + ); +}; diff --git a/components/settings/SettingToggles.tsx b/components/settings/SettingToggles.tsx index b9330003..03858bd6 100644 --- a/components/settings/SettingToggles.tsx +++ b/components/settings/SettingToggles.tsx @@ -14,14 +14,7 @@ import { Loader } from "../Loader"; import { Input } from "../common/Input"; import { useState } from "react"; import { Button } from "../Button"; - -const LANGUAGES: DefaultLanguageOption[] = [ - { label: "eng", value: "eng" }, - { - label: "sv", - value: "sv", - }, -]; +import { MediaToggles } from "./MediaToggles"; export const SettingToggles: React.FC = () => { const [settings, updateSettings] = useSettings(); @@ -57,117 +50,22 @@ export const SettingToggles: React.FC = () => { return ( - - Downloads - - - - Audio language - - Choose a default audio language for downloads. + {/* + Look and feel + + + + Coming soon + + Options for changing the look and feel of the app. - - - - {settings?.defaultAudioLanguage?.label || "None"} - - - - Languages - { - updateSettings({ - defaultAudioLanguage: null, - }); - }} - > - None - - {LANGUAGES.map((l) => ( - { - updateSettings({ - defaultAudioLanguage: l, - }); - }} - > - {l.label} - - ))} - - - - - - Subtitle language - - Choose a default subtitle language for downloads. - - - - - - - {settings?.defaultSubtitleLanguage?.label || "None"} - - - - - Languages - { - updateSettings({ - defaultSubtitleLanguage: null, - }); - }} - > - None - - {LANGUAGES.map((l) => ( - { - updateSettings({ - defaultSubtitleLanguage: l, - }); - }} - > - {l.label} - - ))} - - + - + */} + + Other diff --git a/utils/atoms/settings.ts b/utils/atoms/settings.ts index cde69411..94229cd1 100644 --- a/utils/atoms/settings.ts +++ b/utils/atoms/settings.ts @@ -52,6 +52,7 @@ type Settings = { libraryOptions: LibraryOptions; defaultSubtitleLanguage: DefaultLanguageOption | null; defaultAudioLanguage: DefaultLanguageOption | null; + showHomeTitles: boolean; }; /** @@ -84,6 +85,7 @@ const loadSettings = async (): Promise => { }, defaultAudioLanguage: null, defaultSubtitleLanguage: null, + showHomeTitles: true, }; try {