mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Make filtering local to device
This commit is contained in:
parent
18ea570ea1
commit
c0a9f8b544
1 changed files with 31 additions and 22 deletions
|
@ -17,6 +17,24 @@ function saveServerPreferences(instance) {
|
||||||
instance.saveTimeout = setTimeout(onSaveTimeout.bind(instance), 50);
|
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 = {
|
const defaultSubtitleAppearanceSettings = {
|
||||||
verticalPosition: -3
|
verticalPosition: -3
|
||||||
};
|
};
|
||||||
|
@ -521,15 +539,17 @@ export class UserSettings {
|
||||||
* @return {Query} Query.
|
* @return {Query} Query.
|
||||||
*/
|
*/
|
||||||
loadQuerySettings(key, query) {
|
loadQuerySettings(key, query) {
|
||||||
let values = this.get(key);
|
let sortSettings = this.get(key);
|
||||||
if (values) {
|
let filterSettings = this.get(key + filterSettingsPostfix, false);
|
||||||
values = JSON.parse(values);
|
|
||||||
delete values.NameStartsWith;
|
if (sortSettings) {
|
||||||
delete values.NameLessThan;
|
sortSettings = filterQuerySettings(JSON.parse(sortSettings), allowedSortSettings);
|
||||||
return Object.assign(query, values);
|
}
|
||||||
|
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.
|
* @param {Object} query - Query.
|
||||||
*/
|
*/
|
||||||
saveQuerySettings(key, query) {
|
saveQuerySettings(key, query) {
|
||||||
const allowedFields = [
|
const sortSettings = filterQuerySettings(query, allowedSortSettings);
|
||||||
'SortBy', 'SortOrder', 'Filters', 'HasSubtitles',
|
const filterSettings = filterQuerySettings(query, allowedFilterSettings);
|
||||||
'HasTrailer', 'HasSpecialFeature', 'HasThemeSong',
|
|
||||||
'HasThemeVideo', 'Genres', 'OfficialRatings',
|
|
||||||
'Tags', 'VideoTypes', 'IsHD', 'Is4K', 'Is3D',
|
|
||||||
'Years'
|
|
||||||
];
|
|
||||||
|
|
||||||
const newQuery = Object.keys(query)
|
this.set(key, JSON.stringify(sortSettings));
|
||||||
.filter(field => allowedFields.includes(field))
|
this.set(key + filterSettingsPostfix, JSON.stringify(filterSettings), false);
|
||||||
.reduce((acc, field) => {
|
|
||||||
acc[field] = query[field];
|
|
||||||
return acc;
|
|
||||||
}, {});
|
|
||||||
|
|
||||||
return this.set(key, JSON.stringify(newQuery));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue