From ae5afd9ea7060e56c31f8fe247b7e8e93b7af11b Mon Sep 17 00:00:00 2001 From: viown <48097677+viown@users.noreply.github.com> Date: Mon, 28 Oct 2024 14:35:08 +0300 Subject: [PATCH 1/5] Don't persist letter filter when querying --- src/scripts/settings/userSettings.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/scripts/settings/userSettings.js b/src/scripts/settings/userSettings.js index 27de2f2641..843763f08b 100644 --- a/src/scripts/settings/userSettings.js +++ b/src/scripts/settings/userSettings.js @@ -536,7 +536,10 @@ export class UserSettings { * @param {Object} query - Query. */ saveQuerySettings(key, query) { - return this.set(key, JSON.stringify(query)); + const newQuery = { ...query }; + delete newQuery.NameStartsWith; + delete newQuery.NameLessThan; + return this.set(key, JSON.stringify(newQuery)); } /** From 6f7ece6592024f941b642e3b46e22fb45c01dd58 Mon Sep 17 00:00:00 2001 From: viown <48097677+viown@users.noreply.github.com> Date: Mon, 28 Oct 2024 14:51:57 +0300 Subject: [PATCH 2/5] Remove letter filter from loadQuerySettings --- src/scripts/settings/userSettings.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/scripts/settings/userSettings.js b/src/scripts/settings/userSettings.js index 843763f08b..0bb745199f 100644 --- a/src/scripts/settings/userSettings.js +++ b/src/scripts/settings/userSettings.js @@ -524,6 +524,8 @@ export class UserSettings { let values = this.get(key); if (values) { values = JSON.parse(values); + delete values.NameStartsWith; + delete values.NameLessThan; return Object.assign(query, values); } From 18ea570ea1dd0e7777203009fd78e9a4fb7c4b89 Mon Sep 17 00:00:00 2001 From: viown <48097677+viown@users.noreply.github.com> Date: Tue, 29 Oct 2024 12:07:18 +0300 Subject: [PATCH 3/5] Save filtering and sort fields only --- src/scripts/settings/userSettings.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/scripts/settings/userSettings.js b/src/scripts/settings/userSettings.js index 0bb745199f..12d156e927 100644 --- a/src/scripts/settings/userSettings.js +++ b/src/scripts/settings/userSettings.js @@ -538,9 +538,21 @@ export class UserSettings { * @param {Object} query - Query. */ saveQuerySettings(key, query) { - const newQuery = { ...query }; - delete newQuery.NameStartsWith; - delete newQuery.NameLessThan; + const allowedFields = [ + 'SortBy', 'SortOrder', 'Filters', 'HasSubtitles', + 'HasTrailer', 'HasSpecialFeature', 'HasThemeSong', + 'HasThemeVideo', 'Genres', 'OfficialRatings', + 'Tags', 'VideoTypes', 'IsHD', 'Is4K', 'Is3D', + 'Years' + ]; + + const newQuery = Object.keys(query) + .filter(field => allowedFields.includes(field)) + .reduce((acc, field) => { + acc[field] = query[field]; + return acc; + }, {}); + return this.set(key, JSON.stringify(newQuery)); } From c0a9f8b544cce127a1047bb7d38d901e390f1212 Mon Sep 17 00:00:00 2001 From: viown <48097677+viown@users.noreply.github.com> Date: Tue, 29 Oct 2024 17:56:49 +0300 Subject: [PATCH 4/5] Make filtering local to device --- src/scripts/settings/userSettings.js | 53 ++++++++++++++++------------ 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/src/scripts/settings/userSettings.js b/src/scripts/settings/userSettings.js index 12d156e927..7e41cc63f3 100644 --- a/src/scripts/settings/userSettings.js +++ b/src/scripts/settings/userSettings.js @@ -17,6 +17,24 @@ function saveServerPreferences(instance) { instance.saveTimeout = setTimeout(onSaveTimeout.bind(instance), 50); } +const allowedSortSettings = ['SortBy', 'SortOrder']; + +const filterSettingsPostfix = '-filter'; +const allowedFilterSettings = [ + 'Filters', 'HasSubtitles', 'HasTrailer', 'HasSpecialFeature', + 'HasThemeSong', 'HasThemeVideo', 'Genres', 'OfficialRatings', + 'Tags', 'VideoTypes', 'IsHD', 'Is4K', 'Is3D', 'Years' +]; + +function filterQuerySettings(query, allowedItems) { + return Object.keys(query) + .filter(field => allowedItems.includes(field)) + .reduce((acc, field) => { + acc[field] = query[field]; + return acc; + }, {}); +} + const defaultSubtitleAppearanceSettings = { verticalPosition: -3 }; @@ -521,15 +539,17 @@ export class UserSettings { * @return {Query} Query. */ loadQuerySettings(key, query) { - let values = this.get(key); - if (values) { - values = JSON.parse(values); - delete values.NameStartsWith; - delete values.NameLessThan; - return Object.assign(query, values); + let sortSettings = this.get(key); + let filterSettings = this.get(key + filterSettingsPostfix, false); + + if (sortSettings) { + sortSettings = filterQuerySettings(JSON.parse(sortSettings), allowedSortSettings); + } + if (filterSettings) { + filterSettings = filterQuerySettings(JSON.parse(filterSettings), allowedFilterSettings); } - return query; + return Object.assign(query, sortSettings, filterSettings); } /** @@ -538,22 +558,11 @@ export class UserSettings { * @param {Object} query - Query. */ saveQuerySettings(key, query) { - const allowedFields = [ - 'SortBy', 'SortOrder', 'Filters', 'HasSubtitles', - 'HasTrailer', 'HasSpecialFeature', 'HasThemeSong', - 'HasThemeVideo', 'Genres', 'OfficialRatings', - 'Tags', 'VideoTypes', 'IsHD', 'Is4K', 'Is3D', - 'Years' - ]; + const sortSettings = filterQuerySettings(query, allowedSortSettings); + const filterSettings = filterQuerySettings(query, allowedFilterSettings); - const newQuery = Object.keys(query) - .filter(field => allowedFields.includes(field)) - .reduce((acc, field) => { - acc[field] = query[field]; - return acc; - }, {}); - - return this.set(key, JSON.stringify(newQuery)); + this.set(key, JSON.stringify(sortSettings)); + this.set(key + filterSettingsPostfix, JSON.stringify(filterSettings), false); } /** From d4eae7bde6d2a722250bf889a14940540dfb8634 Mon Sep 17 00:00:00 2001 From: viown <48097677+viown@users.noreply.github.com> Date: Wed, 30 Oct 2024 18:50:48 +0300 Subject: [PATCH 5/5] Add missing episode filter settings --- src/scripts/settings/userSettings.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/scripts/settings/userSettings.js b/src/scripts/settings/userSettings.js index 7e41cc63f3..cb8362cb90 100644 --- a/src/scripts/settings/userSettings.js +++ b/src/scripts/settings/userSettings.js @@ -23,7 +23,9 @@ const filterSettingsPostfix = '-filter'; const allowedFilterSettings = [ 'Filters', 'HasSubtitles', 'HasTrailer', 'HasSpecialFeature', 'HasThemeSong', 'HasThemeVideo', 'Genres', 'OfficialRatings', - 'Tags', 'VideoTypes', 'IsHD', 'Is4K', 'Is3D', 'Years' + 'Tags', 'VideoTypes', 'IsSD', 'IsHD', 'Is4K', 'Is3D', + 'IsFavorite', 'IsMissing', 'IsUnaired', 'ParentIndexNumber', + 'SeriesStatus', 'Years' ]; function filterQuerySettings(query, allowedItems) {