1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-27 23:06:29 -04:00

Convert UI Settings to TypeScript

This commit is contained in:
Mark McDowall
2024-12-26 11:38:02 -08:00
parent fd09ca6e71
commit 89c8a10e0d
13 changed files with 327 additions and 433 deletions
@@ -1,28 +0,0 @@
import { createSelector } from 'reselect';
import { LanguageSettingsAppState } from 'App/State/SettingsAppState';
import Language from 'Language/Language';
import createLanguagesSelector from './createLanguagesSelector';
export default function createFilteredLanguagesSelector(filterUnknown = false) {
const filterItems = ['Any', 'Original'];
if (filterUnknown) {
filterItems.push('Unknown');
}
return createSelector(createLanguagesSelector(), (languages) => {
const { isFetching, isPopulated, error, items } =
languages as LanguageSettingsAppState;
const filteredLanguages = items.filter(
(lang: Language) => !filterItems.includes(lang.name)
);
return {
isFetching,
isPopulated,
error,
items: filteredLanguages,
};
});
}
@@ -1,15 +1,23 @@
import { createSelector } from 'reselect';
import AppState from 'App/State/AppState';
function createLanguagesSelector() {
interface LanguageFilter {
[key: string]: boolean | undefined;
Any: boolean;
Original?: boolean;
Unknown?: boolean;
}
function createLanguagesSelector(
excludeLanguages: LanguageFilter = { Any: true }
) {
return createSelector(
(state: AppState) => state.settings.languages,
(languages) => {
const { isFetching, isPopulated, error, items } = languages;
const filterItems = ['Any'];
const filteredLanguages = items.filter(
(lang) => !filterItems.includes(lang.name)
(lang) => !excludeLanguages[lang.name]
);
return {
@@ -28,6 +28,9 @@ function createSettingsSectionSelector<
const saveError =
'saveError' in sectionSettings ? sectionSettings.saveError : undefined;
const isSaving =
'isSaving' in sectionSettings ? sectionSettings.isSaving : false;
const {
settings,
pendingChanges: selectedPendingChanges,
@@ -36,6 +39,7 @@ function createSettingsSectionSelector<
return {
...other,
isSaving,
saveError,
settings: settings as PendingSection<T>,
pendingChanges: selectedPendingChanges as Partial<T>,