mirror of
https://github.com/Sonarr/Sonarr.git
synced 2026-03-10 15:10:09 -04:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7b0eb44fa7 | ||
|
|
421c1f5470 |
@@ -18,6 +18,9 @@ export interface LanguageSelectInputProps {
|
||||
includeNoChange?: boolean;
|
||||
includeNoChangeDisabled?: boolean;
|
||||
includeMixed?: boolean;
|
||||
includeAny?: boolean;
|
||||
includeOriginal?: boolean;
|
||||
includeUnknown?: boolean;
|
||||
isDisabled?: boolean;
|
||||
onChange: (payload: LanguageSelectInputOnChangeProps) => void;
|
||||
}
|
||||
@@ -27,13 +30,16 @@ export default function LanguageSelectInput({
|
||||
includeNoChange = false,
|
||||
includeNoChangeDisabled,
|
||||
includeMixed = false,
|
||||
includeAny = true,
|
||||
includeOriginal = false,
|
||||
includeUnknown = false,
|
||||
onChange,
|
||||
...otherProps
|
||||
}: LanguageSelectInputProps) {
|
||||
const { data: items = [] } = useFilteredLanguages({
|
||||
includeAny: true,
|
||||
includeOriginal: true,
|
||||
includeUnknown: true,
|
||||
Any: !includeAny,
|
||||
Original: !includeOriginal,
|
||||
Unknown: !includeUnknown,
|
||||
});
|
||||
|
||||
const values = useMemo(() => {
|
||||
|
||||
BIN
frontend/src/Content/Images/thetvdb-dark.png
Normal file
BIN
frontend/src/Content/Images/thetvdb-dark.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.9 KiB |
BIN
frontend/src/Content/Images/thetvdb-light.png
Normal file
BIN
frontend/src/Content/Images/thetvdb-light.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.5 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 14 KiB |
@@ -2,10 +2,18 @@ import { useEffect, useState } from 'react';
|
||||
import { useUiSettingsValues } from 'Settings/UI/useUiSettings';
|
||||
import themes from 'Styles/Themes';
|
||||
|
||||
const useTheme = () => {
|
||||
const useTheme = (): 'dark' | 'light' => {
|
||||
const { theme } = useUiSettingsValues();
|
||||
const selectedTheme = theme ?? window.Sonarr.theme;
|
||||
const [resolvedTheme, setResolvedTheme] = useState(selectedTheme);
|
||||
const [resolvedTheme, setResolvedTheme] = useState(() => {
|
||||
if (selectedTheme === 'auto') {
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches
|
||||
? 'dark'
|
||||
: 'light';
|
||||
}
|
||||
|
||||
return selectedTheme;
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
if (selectedTheme !== 'auto') {
|
||||
|
||||
@@ -32,8 +32,8 @@ function SelectLanguageModalContent(props: SelectLanguageModalContentProps) {
|
||||
isFetched: isPopulated,
|
||||
error,
|
||||
} = useFilteredLanguages({
|
||||
includeAny: true,
|
||||
includeOriginal: true,
|
||||
Any: true,
|
||||
Original: true,
|
||||
});
|
||||
|
||||
const [languageIds, setLanguageIds] = useState(props.languageIds);
|
||||
|
||||
@@ -4,9 +4,9 @@ import Language from 'Language/Language';
|
||||
|
||||
interface LanguageFilter {
|
||||
[key: string]: boolean | undefined;
|
||||
includeAny: boolean;
|
||||
includeOriginal?: boolean;
|
||||
includeUnknown?: boolean;
|
||||
Any: boolean;
|
||||
Original?: boolean;
|
||||
Unknown?: boolean;
|
||||
}
|
||||
|
||||
const PATH = '/language';
|
||||
@@ -22,12 +22,14 @@ export const useLanguages = () => {
|
||||
};
|
||||
|
||||
export const useFilteredLanguages = (
|
||||
excludeLanguages: LanguageFilter = { includeAny: true }
|
||||
excludeLanguages: LanguageFilter = { Any: true }
|
||||
) => {
|
||||
const { data, isFetching, isFetched, error } = useLanguages();
|
||||
|
||||
const filteredItems = useMemo(() => {
|
||||
if (!data) return [];
|
||||
if (!data) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return data.filter((lang) => !excludeLanguages[lang.name]);
|
||||
}, [data, excludeLanguages]);
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
import React from 'react';
|
||||
import InlineMarkdown from 'Components/Markdown/InlineMarkdown';
|
||||
import useTheme from 'Helpers/Hooks/useTheme';
|
||||
import translate from 'Utilities/String/translate';
|
||||
import styles from './TheTvdb.css';
|
||||
|
||||
function TheTvdb() {
|
||||
const theme = useTheme();
|
||||
|
||||
return (
|
||||
<div className={styles.container}>
|
||||
<img
|
||||
className={styles.image}
|
||||
src={`${window.Sonarr.urlBase}/Content/Images/thetvdb.png`}
|
||||
src={`${window.Sonarr.urlBase}/Content/Images/thetvdb-${theme}.png`}
|
||||
/>
|
||||
|
||||
<div className={styles.info}>
|
||||
|
||||
@@ -67,9 +67,9 @@ function UISettings() {
|
||||
isFetched: isLanguagesPopulated,
|
||||
error: languagesError,
|
||||
} = useFilteredLanguages({
|
||||
includeAny: true,
|
||||
includeOriginal: true,
|
||||
includeUnknown: true,
|
||||
Any: true,
|
||||
Original: true,
|
||||
Unknown: true,
|
||||
});
|
||||
|
||||
const {
|
||||
@@ -258,6 +258,8 @@ function UISettings() {
|
||||
name="uiLanguage"
|
||||
helpText={translate('UiLanguageHelpText')}
|
||||
helpTextWarning={translate('BrowserReloadRequired')}
|
||||
includeOriginal={false}
|
||||
includeUnknown={false}
|
||||
onChange={handleInputChange}
|
||||
{...settings.uiLanguage}
|
||||
errors={
|
||||
|
||||
@@ -7518,8 +7518,7 @@
|
||||
"notQualityUpgrade",
|
||||
"notRevisionUpgrade",
|
||||
"notCustomFormatUpgrade",
|
||||
"notCustomFormatUpgradeAfterRename",
|
||||
"multiSeason"
|
||||
"notCustomFormatUpgradeAfterRename"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user