1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-03-10 15:10:09 -04:00

Compare commits

..

2 Commits

Author SHA1 Message Date
Mark McDowall
7b0eb44fa7 Theme specific metadata source images 2026-03-08 17:52:20 -07:00
Mark McDowall
421c1f5470 Fix v5 language select and filtering 2026-03-08 17:52:19 -07:00
10 changed files with 38 additions and 18 deletions

View File

@@ -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(() => {

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -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') {

View File

@@ -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);

View File

@@ -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]);

View File

@@ -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}>

View File

@@ -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={

View File

@@ -7518,8 +7518,7 @@
"notQualityUpgrade",
"notRevisionUpgrade",
"notCustomFormatUpgrade",
"notCustomFormatUpgradeAfterRename",
"multiSeason"
"notCustomFormatUpgradeAfterRename"
],
"type": "string"
},