summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLASER-Yi <[email protected]>2022-02-24 01:05:23 +0800
committerLASER-Yi <[email protected]>2022-02-24 01:05:23 +0800
commit63f1e63fa83fbf789061e58652d157f8965ff527 (patch)
treee656e4876d942f6f0a2ed68165799b9341ed750f
parentbb806defdb222218a5c65fd4dda2c8a5ac06043c (diff)
downloadbazarr-63f1e63fa83fbf789061e58652d157f8965ff527.tar.gz
bazarr-63f1e63fa83fbf789061e58652d157f8965ff527.zip
Fix a issue that seleection of the languages profiles could be Unknown on settings page
-rw-r--r--frontend/src/pages/Settings/Languages/components.tsx6
-rw-r--r--frontend/src/pages/Settings/Languages/index.tsx141
-rw-r--r--frontend/src/pages/Settings/Languages/modal.tsx4
-rw-r--r--frontend/src/pages/Settings/Languages/table.tsx6
-rw-r--r--frontend/src/pages/Settings/components/forms.tsx3
-rw-r--r--frontend/src/utilities/languages.ts2
6 files changed, 73 insertions, 89 deletions
diff --git a/frontend/src/pages/Settings/Languages/components.tsx b/frontend/src/pages/Settings/Languages/components.tsx
index 946866878..abfdba601 100644
--- a/frontend/src/pages/Settings/Languages/components.tsx
+++ b/frontend/src/pages/Settings/Languages/components.tsx
@@ -1,6 +1,6 @@
import { LanguageSelector as CLanguageSelector } from "components";
import React, { FunctionComponent, useMemo } from "react";
-import { useEnabledLanguagesContext, useProfilesContext } from ".";
+import { useLatestEnabledLanguages, useLatestProfiles } from ".";
import { BaseInput, Selector, useSingleUpdate } from "../components";
interface LanguageSelectorProps {
@@ -10,7 +10,7 @@ interface LanguageSelectorProps {
export const LanguageSelector: FunctionComponent<
LanguageSelectorProps & BaseInput<string[]>
> = ({ settingKey, options }) => {
- const enabled = useEnabledLanguagesContext();
+ const enabled = useLatestEnabledLanguages();
const update = useSingleUpdate();
return (
@@ -30,7 +30,7 @@ interface ProfileSelectorProps {}
export const ProfileSelector: FunctionComponent<
ProfileSelectorProps & BaseInput<Language.Profile>
> = ({ settingKey }) => {
- const profiles = useProfilesContext();
+ const profiles = useLatestProfiles();
const profileOptions = useMemo<SelectorOption<number>[]>(
() =>
diff --git a/frontend/src/pages/Settings/Languages/index.tsx b/frontend/src/pages/Settings/Languages/index.tsx
index 5bb05dfa6..fd0473226 100644
--- a/frontend/src/pages/Settings/Languages/index.tsx
+++ b/frontend/src/pages/Settings/Languages/index.tsx
@@ -1,6 +1,6 @@
import { useLanguageProfiles, useLanguages } from "apis/hooks";
import { isArray } from "lodash";
-import React, { FunctionComponent, useContext } from "react";
+import React, { FunctionComponent } from "react";
import { useEnabledLanguages } from "utilities/languages";
import {
Check,
@@ -15,32 +15,25 @@ import { enabledLanguageKey, languageProfileKey } from "../keys";
import { LanguageSelector, ProfileSelector } from "./components";
import Table from "./table";
-const EnabledLanguageContext = React.createContext<readonly Language.Info[]>(
- []
-);
-const LanguagesProfileContext = React.createContext<
- readonly Language.Profile[]
->([]);
-
-export function useEnabledLanguagesContext() {
- const list = useContext(EnabledLanguageContext);
+export function useLatestEnabledLanguages() {
+ const { data } = useEnabledLanguages();
const latest = useLatest<Language.Info[]>(enabledLanguageKey, isArray);
if (latest) {
return latest;
} else {
- return list;
+ return data;
}
}
-export function useProfilesContext() {
- const list = useContext(LanguagesProfileContext);
+export function useLatestProfiles() {
+ const { data = [] } = useLanguageProfiles();
const latest = useLatest<Language.Profile[]>(languageProfileKey, isArray);
if (latest) {
return latest;
} else {
- return list;
+ return data;
}
}
@@ -48,81 +41,73 @@ interface Props {}
const SettingsLanguagesView: FunctionComponent<Props> = () => {
const { data: languages } = useLanguages();
- const { data: enabled } = useEnabledLanguages();
- const { data: profiles } = useLanguageProfiles();
return (
<SettingsProvider title="Languages - Bazarr (Settings)">
- <EnabledLanguageContext.Provider value={enabled}>
- <LanguagesProfileContext.Provider value={profiles ?? []}>
- <Group header="Subtitles Language">
+ <Group header="Subtitles Language">
+ <Input>
+ <Check
+ label="Single Language"
+ settingKey="settings-general-single_language"
+ ></Check>
+ <Message>
+ Download a single Subtitles file without adding the language code to
+ the filename.
+ </Message>
+ <Message type="warning">
+ We don't recommend enabling this option unless absolutely required
+ (ie: media player not supporting language code in subtitles
+ filename). Results may vary.
+ </Message>
+ </Input>
+ <Input name="Languages Filter">
+ <LanguageSelector
+ settingKey={enabledLanguageKey}
+ options={languages ?? []}
+ ></LanguageSelector>
+ </Input>
+ </Group>
+ <Group header="Languages Profiles">
+ <Table></Table>
+ </Group>
+ <Group header="Default Settings">
+ <CollapseBox>
+ <CollapseBox.Control>
<Input>
<Check
- label="Single Language"
- settingKey="settings-general-single_language"
+ label="Series"
+ settingKey="settings-general-serie_default_enabled"
></Check>
<Message>
- Download a single Subtitles file without adding the language
- code to the filename.
+ Apply only to Series added to Bazarr after enabling this option.
</Message>
- <Message type="warning">
- We don't recommend enabling this option unless absolutely
- required (ie: media player not supporting language code in
- subtitles filename). Results may vary.
+ </Input>
+ </CollapseBox.Control>
+ <CollapseBox.Content indent>
+ <Input name="Profile">
+ <ProfileSelector settingKey="settings-general-serie_default_profile"></ProfileSelector>
+ </Input>
+ </CollapseBox.Content>
+ </CollapseBox>
+ <CollapseBox>
+ <CollapseBox.Control>
+ <Input>
+ <Check
+ label="Movies"
+ settingKey="settings-general-movie_default_enabled"
+ ></Check>
+ <Message>
+ Apply only to Movies added to Bazarr after enabling this option.
</Message>
</Input>
- <Input name="Languages Filter">
- <LanguageSelector
- settingKey={enabledLanguageKey}
- options={languages ?? []}
- ></LanguageSelector>
+ </CollapseBox.Control>
+ <CollapseBox.Content>
+ <Input name="Profile">
+ <ProfileSelector settingKey="settings-general-movie_default_profile"></ProfileSelector>
</Input>
- </Group>
- <Group header="Languages Profiles">
- <Table></Table>
- </Group>
- <Group header="Default Settings">
- <CollapseBox>
- <CollapseBox.Control>
- <Input>
- <Check
- label="Series"
- settingKey="settings-general-serie_default_enabled"
- ></Check>
- <Message>
- Apply only to Series added to Bazarr after enabling this
- option.
- </Message>
- </Input>
- </CollapseBox.Control>
- <CollapseBox.Content indent>
- <Input name="Profile">
- <ProfileSelector settingKey="settings-general-serie_default_profile"></ProfileSelector>
- </Input>
- </CollapseBox.Content>
- </CollapseBox>
- <CollapseBox>
- <CollapseBox.Control>
- <Input>
- <Check
- label="Movies"
- settingKey="settings-general-movie_default_enabled"
- ></Check>
- <Message>
- Apply only to Movies added to Bazarr after enabling this
- option.
- </Message>
- </Input>
- </CollapseBox.Control>
- <CollapseBox.Content>
- <Input name="Profile">
- <ProfileSelector settingKey="settings-general-movie_default_profile"></ProfileSelector>
- </Input>
- </CollapseBox.Content>
- </CollapseBox>
- </Group>
- </LanguagesProfileContext.Provider>
- </EnabledLanguageContext.Provider>
+ </CollapseBox.Content>
+ </CollapseBox>
+ </Group>
</SettingsProvider>
);
};
diff --git a/frontend/src/pages/Settings/Languages/modal.tsx b/frontend/src/pages/Settings/Languages/modal.tsx
index 028d9500e..f7fea93cc 100644
--- a/frontend/src/pages/Settings/Languages/modal.tsx
+++ b/frontend/src/pages/Settings/Languages/modal.tsx
@@ -19,7 +19,7 @@ import React, {
import { Button, Form } from "react-bootstrap";
import { Column, TableUpdater } from "react-table";
import { BuildKey } from "utilities";
-import { useEnabledLanguagesContext } from ".";
+import { useLatestEnabledLanguages } from ".";
import { Input, Message } from "../components";
import { cutoffOptions } from "./options";
interface Props {
@@ -45,7 +45,7 @@ const LanguagesProfileModal: FunctionComponent<Props & BaseModalProps> = (
const { payload: profile, closeModal } =
useModalInformation<Language.Profile>(modal.modalKey);
- const languages = useEnabledLanguagesContext();
+ const languages = useLatestEnabledLanguages();
const [current, setProfile] = useState(createDefaultProfile);
diff --git a/frontend/src/pages/Settings/Languages/table.tsx b/frontend/src/pages/Settings/Languages/table.tsx
index 20e54bf53..7624510f9 100644
--- a/frontend/src/pages/Settings/Languages/table.tsx
+++ b/frontend/src/pages/Settings/Languages/table.tsx
@@ -4,16 +4,16 @@ import { cloneDeep } from "lodash";
import React, { FunctionComponent, useCallback, useMemo } from "react";
import { Badge, Button, ButtonGroup } from "react-bootstrap";
import { Column, TableUpdater } from "react-table";
-import { useEnabledLanguagesContext, useProfilesContext } from ".";
+import { useLatestEnabledLanguages, useLatestProfiles } from ".";
import { useSingleUpdate } from "../components";
import { languageProfileKey } from "../keys";
import Modal from "./modal";
import { anyCutoff } from "./options";
const Table: FunctionComponent = () => {
- const profiles = useProfilesContext();
+ const profiles = useLatestProfiles();
- const languages = useEnabledLanguagesContext();
+ const languages = useLatestEnabledLanguages();
const nextProfileId = useMemo(
() =>
diff --git a/frontend/src/pages/Settings/components/forms.tsx b/frontend/src/pages/Settings/components/forms.tsx
index d85977a39..47361289a 100644
--- a/frontend/src/pages/Settings/components/forms.tsx
+++ b/frontend/src/pages/Settings/components/forms.tsx
@@ -139,8 +139,7 @@ export function Selector<
return (
<CSelector
{...selector}
- // TODO: Force as any
- defaultValue={value as any}
+ value={value as SelectorValueType<T, M>}
onChange={(v) => {
v = beforeStaged ? beforeStaged(v) : v;
update(v, settingKey);
diff --git a/frontend/src/utilities/languages.ts b/frontend/src/utilities/languages.ts
index 7077da959..077e7884d 100644
--- a/frontend/src/utilities/languages.ts
+++ b/frontend/src/utilities/languages.ts
@@ -10,7 +10,7 @@ export function useEnabledLanguages() {
const query = useLanguages();
const enabled = useMemo(() => {
- const data =
+ const data: Language.Info[] =
query.data
?.filter((v) => v.enabled)
.map((v) => ({ code2: v.code2, name: v.name })) ?? [];