summaryrefslogtreecommitdiffhomepage
path: root/frontend/src/Settings/Languages/index.tsx
blob: 01629bb51961d43bdccbbdc8240d36ff2de1cba4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import { isArray } from "lodash";
import React, { FunctionComponent, useContext } from "react";
import {
  useEnabledLanguages,
  useLanguageProfiles,
  useLanguages,
} from "../../@redux/hooks";
import {
  Check,
  CollapseBox,
  Group,
  Input,
  Message,
  SettingsProvider,
  useLatest,
} from "../components";
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);
  const latest = useLatest<Language.Info[]>(enabledLanguageKey, isArray);

  if (latest) {
    return latest;
  } else {
    return list;
  }
}

export function useProfilesContext() {
  const list = useContext(LanguagesProfileContext);
  const latest = useLatest<Language.Profile[]>(languageProfileKey, isArray);

  if (latest) {
    return latest;
  } else {
    return list;
  }
}

interface Props {}

const SettingsLanguagesView: FunctionComponent<Props> = () => {
  const languages = useLanguages();
  const enabled = useEnabledLanguages();
  const profiles = useLanguageProfiles();

  return (
    <SettingsProvider title="Languages - Bazarr (Settings)">
      <EnabledLanguageContext.Provider value={enabled}>
        <LanguagesProfileContext.Provider value={profiles ?? []}>
          <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="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>
    </SettingsProvider>
  );
};

export default SettingsLanguagesView;