From 3d107989cbf5813c9b50d911b4265f45eedc0300 Mon Sep 17 00:00:00 2001 From: engine Date: Tue, 26 Nov 2024 10:51:33 +0100 Subject: [PATCH] Move allowedFilterSettings to constants file --- .../filterdialog/filterIndicator.js | 26 +++---------------- src/components/filterdialog/filterdialog.js | 25 +++--------------- src/constants/allowedFilterSettings.ts | 8 ++++++ src/scripts/settings/userSettings.js | 12 +++------ 4 files changed, 19 insertions(+), 52 deletions(-) create mode 100644 src/constants/allowedFilterSettings.ts diff --git a/src/components/filterdialog/filterIndicator.js b/src/components/filterdialog/filterIndicator.js index 90b13cd0d9..d7abee85b5 100644 --- a/src/components/filterdialog/filterIndicator.js +++ b/src/components/filterdialog/filterIndicator.js @@ -1,28 +1,10 @@ import './filterIndicator.scss'; +import { ALLOWED_FILTER_SETTINGS } from '../../constants/allowedFilterSettings'; export function getFilterStatus(query) { - return Boolean( - query.Filters - || query.IsFavorite - || query.VideoTypes - || query.SeriesStatus - || query.Is4K - || (query.IsHD !== undefined && query.IsHD !== null) - || query.IsSD - || query.Is3D - || query.HasSubtitles - || query.HasTrailer - || query.HasSpecialFeature - || query.HasThemeSong - || query.HasThemeVideo - || query.IsMissing - || query.ParentIndexNumber - || query.Genres - || query.Tags - || query.Years - || query.OfficialRatings - || query.IsUnaired - ); + return ALLOWED_FILTER_SETTINGS.some(setting => { + return query[setting] !== undefined && query[setting] !== null; + }); } export function setFilterStatus(page, query) { diff --git a/src/components/filterdialog/filterdialog.js b/src/components/filterdialog/filterdialog.js index 3ee47c965c..6adb41257e 100644 --- a/src/components/filterdialog/filterdialog.js +++ b/src/components/filterdialog/filterdialog.js @@ -10,6 +10,7 @@ import './style.scss'; import ServerConnections from '../ServerConnections'; import template from './filterdialog.template.html'; import { stopMultiSelect } from '../../components/multiSelect/multiSelect'; +import { ALLOWED_FILTER_SETTINGS } from '../../constants/allowedFilterSettings'; function merge(resultItems, queryItems, delimiter) { if (!queryItems) { @@ -248,27 +249,9 @@ class FilterDialog { */ onResetAllFilters(context) { const query = this.options.query; - query.Filters = null; - query.IsFavorite = null; - query.VideoTypes = null; - query.SeriesStatus = null; - query.Is4K = null; - query.IsHD = null; - query.IsSD = null; - query.Is3D = null; - query.HasSubtitles = null; - query.HasTrailer = null; - query.HasSpecialFeature = null; - query.HasThemeSong = null; - query.HasThemeVideo = null; - query.IsMissing = null; - query.ParentIndexNumber = null; - query.Genres = null; - query.Tags = null; - query.Years = null; - query.OfficialRatings = null; - query.IsUnaired = null; - query.SeriesStatus = null; + ALLOWED_FILTER_SETTINGS.forEach(setting => { + query[setting] = null; + }); query.StartIndex = 0; for (const elem of context.querySelectorAll('input[type=checkbox]')) { elem.checked = false; diff --git a/src/constants/allowedFilterSettings.ts b/src/constants/allowedFilterSettings.ts new file mode 100644 index 0000000000..c279878b4f --- /dev/null +++ b/src/constants/allowedFilterSettings.ts @@ -0,0 +1,8 @@ +/** The allowed filter settings */ +export const ALLOWED_FILTER_SETTINGS = [ + 'Filters', 'HasSubtitles', 'HasTrailer', 'HasSpecialFeature', + 'HasThemeSong', 'HasThemeVideo', 'Genres', 'OfficialRatings', + 'Tags', 'VideoTypes', 'IsSD', 'IsHD', 'Is4K', 'Is3D', + 'IsFavorite', 'IsMissing', 'IsUnaired', 'ParentIndexNumber', + 'SeriesStatus', 'Years' +]; diff --git a/src/scripts/settings/userSettings.js b/src/scripts/settings/userSettings.js index 23e1f000f3..f0421b3e92 100644 --- a/src/scripts/settings/userSettings.js +++ b/src/scripts/settings/userSettings.js @@ -2,6 +2,7 @@ import Events from '../../utils/events.ts'; import { toBoolean } from '../../utils/string.ts'; import browser from '../browser'; import appSettings from './appSettings'; +import { ALLOWED_FILTER_SETTINGS } from '../../constants/allowedFilterSettings'; function onSaveTimeout() { const self = this; @@ -20,13 +21,6 @@ function saveServerPreferences(instance) { const allowedSortSettings = ['SortBy', 'SortOrder']; const filterSettingsPostfix = '-filter'; -const allowedFilterSettings = [ - 'Filters', 'HasSubtitles', 'HasTrailer', 'HasSpecialFeature', - 'HasThemeSong', 'HasThemeVideo', 'Genres', 'OfficialRatings', - 'Tags', 'VideoTypes', 'IsSD', 'IsHD', 'Is4K', 'Is3D', - 'IsFavorite', 'IsMissing', 'IsUnaired', 'ParentIndexNumber', - 'SeriesStatus', 'Years' -]; function filterQuerySettings(query, allowedItems) { return Object.keys(query) @@ -548,7 +542,7 @@ export class UserSettings { sortSettings = filterQuerySettings(JSON.parse(sortSettings), allowedSortSettings); } if (filterSettings) { - filterSettings = filterQuerySettings(JSON.parse(filterSettings), allowedFilterSettings); + filterSettings = filterQuerySettings(JSON.parse(filterSettings), ALLOWED_FILTER_SETTINGS); } return Object.assign(query, sortSettings, filterSettings); @@ -561,7 +555,7 @@ export class UserSettings { */ saveQuerySettings(key, query) { const sortSettings = filterQuerySettings(query, allowedSortSettings); - const filterSettings = filterQuerySettings(query, allowedFilterSettings); + const filterSettings = filterQuerySettings(query, ALLOWED_FILTER_SETTINGS); this.set(key, JSON.stringify(sortSettings)); this.set(key + filterSettingsPostfix, JSON.stringify(filterSettings), false);