diff --git a/src/controllers/movies/moviecollections.js b/src/controllers/movies/moviecollections.js index 6e6af9dc9..da9477c88 100644 --- a/src/controllers/movies/moviecollections.js +++ b/src/controllers/movies/moviecollections.js @@ -24,7 +24,7 @@ export default function (view, params, tabContent) { EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || 'Poster' + view: userSettings.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { @@ -32,7 +32,7 @@ export default function (view, params, tabContent) { } pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + userSettings.loadQuerySettings(key, pageData.query); } return pageData; @@ -183,7 +183,7 @@ export default function (view, params, tabContent) { const itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.saveQueryValues(getSavedQueryKey(), query); + userSettings.saveQuerySettings(getSavedQueryKey(), query); loading.hide(); isLoading = false; @@ -234,7 +234,7 @@ export default function (view, params, tabContent) { btnSelectView.addEventListener('layoutchange', function (e) { const viewStyle = e.detail.viewStyle; getPageData().view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); + userSettings.saveViewSetting(getSavedQueryKey(), viewStyle); getQuery().StartIndex = 0; onViewStyleChange(); reloadItems(tabElement); diff --git a/src/controllers/movies/moviegenres.js b/src/controllers/movies/moviegenres.js index 52cb97bb7..3d866c6e9 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -1,7 +1,7 @@ import escapeHtml from 'escape-html'; import layoutManager from '../../components/layoutManager'; import loading from '../../components/loading/loading'; -import libraryBrowser from '../../scripts/libraryBrowser'; +import * as userSettings from '../../scripts/settings/userSettings'; import cardBuilder from '../../components/cardbuilder/cardBuilder'; import lazyLoader from '../../components/lazyLoader/lazyLoaderIntersectionObserver'; import globalize from '../../scripts/globalize'; @@ -22,10 +22,10 @@ export default function (view, params, tabContent) { Recursive: true, EnableTotalRecordCount: false }, - view: 'Poster' + view: userSettings.getSavedView(key) || 'Poster' }; pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + userSettings.loadQuerySettings(key, pageData.query); } return pageData; @@ -181,7 +181,7 @@ export default function (view, params, tabContent) { elem.innerHTML = html; lazyLoader.lazyChildren(elem, fillItemsContainer); - libraryBrowser.saveQueryValues(getSavedQueryKey(), query); + userSettings.saveQuerySettings(getSavedQueryKey(), query); loading.hide(); }); } @@ -203,7 +203,7 @@ export default function (view, params, tabContent) { this.setCurrentViewStyle = function (viewStyle) { getPageData().view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); + userSettings.saveViewSetting(getSavedQueryKey(), viewStyle); fullyReload(); }; diff --git a/src/controllers/movies/movietrailers.js b/src/controllers/movies/movietrailers.js index 81f9f8b14..8e9f7c4ac 100644 --- a/src/controllers/movies/movietrailers.js +++ b/src/controllers/movies/movietrailers.js @@ -27,14 +27,14 @@ export default function (view, params, tabContent) { EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || 'Poster' + view: userSettings.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { pageData.query['Limit'] = userSettings.libraryPageSize(); } - libraryBrowser.loadSavedQueryValues(key, pageData.query); + userSettings.loadQuerySettings(key, pageData.query); } return pageData; @@ -172,7 +172,7 @@ export default function (view, params, tabContent) { const itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.saveQueryValues(getSavedQueryKey(), query); + userSettings.saveQuerySettings(getSavedQueryKey(), query); loading.hide(); isLoading = false; }); diff --git a/src/controllers/music/musicalbums.js b/src/controllers/music/musicalbums.js index 6c0c45a0f..f878b7e65 100644 --- a/src/controllers/music/musicalbums.js +++ b/src/controllers/music/musicalbums.js @@ -42,7 +42,7 @@ export default function (view, params, tabContent) { EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || 'Poster' + view: userSettings.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { @@ -50,7 +50,7 @@ export default function (view, params, tabContent) { } pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + userSettings.loadQuerySettings(key, pageData.query); } return pageData; @@ -61,11 +61,7 @@ export default function (view, params, tabContent) { } function getSavedQueryKey() { - if (!savedQueryKey) { - savedQueryKey = libraryBrowser.getSavedQueryKey('musicalbums'); - } - - return savedQueryKey; + return `${params.topParentId}-musicalbums`; } const onViewStyleChange = () => { @@ -174,7 +170,7 @@ export default function (view, params, tabContent) { const itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.saveQueryValues(getSavedQueryKey(), query); + userSettings.saveQuerySettings(getSavedQueryKey(), query); loading.hide(); isLoading = false; @@ -184,7 +180,6 @@ export default function (view, params, tabContent) { }); }; - let savedQueryKey; let pageData; let isLoading = false; @@ -280,7 +275,7 @@ export default function (view, params, tabContent) { btnSelectView.addEventListener('layoutchange', function (e) { const viewStyle = e.detail.viewStyle; getPageData().view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); + userSettings.saveViewSetting(getSavedQueryKey(), viewStyle); getQuery().StartIndex = 0; onViewStyleChange(); reloadItems(); diff --git a/src/controllers/music/musicartists.js b/src/controllers/music/musicartists.js index 4126086ad..2d89fd807 100644 --- a/src/controllers/music/musicartists.js +++ b/src/controllers/music/musicartists.js @@ -10,8 +10,8 @@ import Events from '../../utils/events.ts'; import '../../elements/emby-itemscontainer/emby-itemscontainer'; export default function (view, params, tabContent) { - function getPageData(context) { - const key = getSavedQueryKey(context); + function getPageData() { + const key = getSavedQueryKey(); let pageData = data[key]; if (!pageData) { @@ -31,26 +31,22 @@ export default function (view, params, tabContent) { pageData = data[key] = { query: queryValues, - view: libraryBrowser.getSavedView(key) || 'Poster' + view: userSettings.getSavedView(key) || 'Poster' }; pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + userSettings.loadQuerySettings(key, pageData.query); } return pageData; } - function getQuery(context) { - return getPageData(context).query; + function getQuery() { + return getPageData().query; } - const getSavedQueryKey = (context) => { - if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.getSavedQueryKey(this.mode); - } - - return context.savedQueryKey; - }; + function getSavedQueryKey() { + return `${params.topParentId}-${this.mode}`; + } const onViewStyleChange = () => { const viewStyle = this.getCurrentViewStyle(); @@ -67,10 +63,10 @@ export default function (view, params, tabContent) { itemsContainer.innerHTML = ''; }; - const reloadItems = (page) => { + const reloadItems = () => { loading.show(); isLoading = true; - const query = getQuery(page); + const query = getQuery(); const promise = this.mode == 'albumartists' ? ApiClient.getAlbumArtists(ApiClient.getCurrentUserId(), query) : ApiClient.getArtists(ApiClient.getCurrentUserId(), query); @@ -83,7 +79,7 @@ export default function (view, params, tabContent) { if (userSettings.libraryPageSize() > 0) { query.StartIndex += query.Limit; } - reloadItems(tabContent); + reloadItems(); } function onPreviousPageClick() { @@ -94,7 +90,7 @@ export default function (view, params, tabContent) { if (userSettings.libraryPageSize() > 0) { query.StartIndex = Math.max(0, query.StartIndex - query.Limit); } - reloadItems(tabContent); + reloadItems(); } window.scrollTo(0, 0); @@ -156,7 +152,7 @@ export default function (view, params, tabContent) { const itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); + userSettings.saveQuerySettings(getSavedQueryKey(), query); loading.hide(); isLoading = false; @@ -172,20 +168,20 @@ export default function (view, params, tabContent) { this.showFilterMenu = function () { import('../../components/filterdialog/filterdialog').then(({ default: FilterDialog }) => { const filterDialog = new FilterDialog({ - query: getQuery(tabContent), + query: getQuery(), mode: this.mode, serverId: ApiClient.serverId() }); Events.on(filterDialog, 'filterchange', function () { - getQuery(tabContent).StartIndex = 0; - reloadItems(tabContent); + getQuery().StartIndex = 0; + reloadItems(); }); filterDialog.show(); }); }; this.getCurrentViewStyle = function () { - return getPageData(tabContent).view; + return getPageData().view; }; const initPage = (tabElement) => { @@ -194,7 +190,7 @@ export default function (view, params, tabContent) { alphaPickerElement.addEventListener('alphavaluechanged', function (e) { const newValue = e.detail.value; - const query = getQuery(tabElement); + const query = getQuery(); if (newValue === '#') { query.NameLessThan = 'A'; delete query.NameStartsWith; @@ -203,7 +199,7 @@ export default function (view, params, tabContent) { delete query.NameLessThan; } query.StartIndex = 0; - reloadItems(tabElement); + reloadItems(); }); this.alphaPicker = new AlphaPicker({ element: alphaPickerElement, @@ -223,11 +219,11 @@ export default function (view, params, tabContent) { }); btnSelectView.addEventListener('layoutchange', function (e) { const viewStyle = e.detail.viewStyle; - getPageData(tabElement).view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(tabElement), viewStyle); - getQuery(tabElement).StartIndex = 0; + getPageData().view = viewStyle; + userSettings.saveViewSetting(getSavedQueryKey(), viewStyle); + getQuery().StartIndex = 0; onViewStyleChange(); - reloadItems(tabElement); + reloadItems(); }); }; @@ -235,8 +231,8 @@ export default function (view, params, tabContent) { onViewStyleChange(); this.renderTab = () => { - reloadItems(tabContent); - this.alphaPicker?.updateControls(getQuery(tabContent)); + reloadItems(); + this.alphaPicker?.updateControls(getQuery()); }; } diff --git a/src/controllers/music/musicgenres.js b/src/controllers/music/musicgenres.js index 9c5bc9dcb..3b7952957 100644 --- a/src/controllers/music/musicgenres.js +++ b/src/controllers/music/musicgenres.js @@ -1,4 +1,4 @@ -import libraryBrowser from '../../scripts/libraryBrowser'; +import * as userSettings from '../../scripts/settings/userSettings'; import cardBuilder from '../../components/cardbuilder/cardBuilder'; import imageLoader from '../../components/images/imageLoader'; import loading from '../../components/loading/loading'; @@ -17,10 +17,10 @@ export default function (view, params, tabContent) { Fields: 'PrimaryImageAspectRatio,ItemCounts', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || 'Poster' + view: userSettings.getSavedView(key) || 'Poster' }; pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + userSettings.loadQuerySettings(key, pageData.query); } return pageData; @@ -31,7 +31,7 @@ export default function (view, params, tabContent) { } function getSavedQueryKey() { - return libraryBrowser.getSavedQueryKey('genres'); + return `${params.topParentId}-genres`; } function getPromise() { @@ -87,7 +87,7 @@ export default function (view, params, tabContent) { const elem = context.querySelector('#items'); elem.innerHTML = html; imageLoader.lazyChildren(elem); - libraryBrowser.saveQueryValues(getSavedQueryKey(), query); + userSettings.saveQuerySettings(getSavedQueryKey(), query); loading.hide(); import('../../components/autoFocuser').then(({ default: autoFocuser }) => { @@ -113,7 +113,7 @@ export default function (view, params, tabContent) { this.setCurrentViewStyle = function (viewStyle) { getPageData().view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); + userSettings.saveViewSetting(getSavedQueryKey(), viewStyle); fullyReload(); }; diff --git a/src/controllers/music/musicplaylists.js b/src/controllers/music/musicplaylists.js index ab3cf8f1d..3bf23b385 100644 --- a/src/controllers/music/musicplaylists.js +++ b/src/controllers/music/musicplaylists.js @@ -1,4 +1,4 @@ -import libraryBrowser from '../../scripts/libraryBrowser'; +import * as userSettings from '../../scripts/settings/userSettings'; import cardBuilder from '../../components/cardbuilder/cardBuilder'; import imageLoader from '../../components/images/imageLoader'; import loading from '../../components/loading/loading'; @@ -18,10 +18,10 @@ export default function (view, params, tabContent) { Fields: 'PrimaryImageAspectRatio,SortName,CanDelete', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || 'Poster' + view: userSettings.getSavedView(key) || 'Poster' }; pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + userSettings.loadQuerySettings(key, pageData.query); } return pageData; @@ -32,7 +32,7 @@ export default function (view, params, tabContent) { } function getSavedQueryKey() { - return libraryBrowser.getSavedQueryKey('genres'); + return `${params.topParentId}-musicplaylists`; } function getPromise() { @@ -58,7 +58,7 @@ export default function (view, params, tabContent) { const elem = context.querySelector('#items'); elem.innerHTML = html; imageLoader.lazyChildren(elem); - libraryBrowser.saveQueryValues(getSavedQueryKey(), query); + userSettings.saveQuerySettings(getSavedQueryKey(), query); loading.hide(); import('../../components/autoFocuser').then(({ default: autoFocuser }) => { diff --git a/src/controllers/music/songs.js b/src/controllers/music/songs.js index 5e5337d03..9f405ed7b 100644 --- a/src/controllers/music/songs.js +++ b/src/controllers/music/songs.js @@ -12,8 +12,8 @@ import Events from '../../utils/events.ts'; import '../../elements/emby-itemscontainer/emby-itemscontainer'; export default function (view, params, tabContent) { - function getPageData(context) { - const key = getSavedQueryKey(context); + function getPageData() { + const key = getSavedQueryKey(); let pageData = data[key]; if (!pageData) { @@ -35,28 +35,24 @@ export default function (view, params, tabContent) { } pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + userSettings.loadQuerySettings(key, pageData.query); } return pageData; } - function getQuery(context) { - return getPageData(context).query; + function getQuery() { + return getPageData().query; } - function getSavedQueryKey(context) { - if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.getSavedQueryKey('songs'); - } - - return context.savedQueryKey; + function getSavedQueryKey() { + return `${params.topParentId}-songs`; } function reloadItems(page) { loading.show(); isLoading = true; - const query = getQuery(page); + const query = getQuery(); ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) { function onNextPageClick() { if (isLoading) { @@ -117,7 +113,7 @@ export default function (view, params, tabContent) { const itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); + userSettings.saveQuerySettings(getSavedQueryKey(), query); tabContent.querySelector('.btnShuffle').classList.toggle('hide', result.TotalRecordCount < 1); @@ -137,13 +133,13 @@ export default function (view, params, tabContent) { self.showFilterMenu = function () { import('../../components/filterdialog/filterdialog').then(({ default: FilterDialog }) => { const filterDialog = new FilterDialog({ - query: getQuery(tabContent), + query: getQuery(), mode: 'songs', serverId: ApiClient.serverId() }); Events.on(filterDialog, 'filterchange', function () { - getQuery(tabContent).StartIndex = 0; - reloadItems(tabContent); + getQuery().StartIndex = 0; + reloadItems(); }); filterDialog.show(); }); @@ -156,7 +152,7 @@ export default function (view, params, tabContent) { } self.getCurrentViewStyle = function () { - return getPageData(tabContent).view; + return getPageData().view; }; function initPage(tabElement) { @@ -197,10 +193,10 @@ export default function (view, params, tabContent) { id: 'Random,SortName' }], callback: function () { - getQuery(tabElement).StartIndex = 0; - reloadItems(tabElement); + getQuery().StartIndex = 0; + reloadItems(); }, - query: getQuery(tabElement), + query: getQuery(), button: e.target }); }); diff --git a/src/controllers/shows/episodes.js b/src/controllers/shows/episodes.js index f2f6c605d..ea67583fe 100644 --- a/src/controllers/shows/episodes.js +++ b/src/controllers/shows/episodes.js @@ -11,8 +11,8 @@ import Events from '../../utils/events.ts'; import '../../elements/emby-itemscontainer/emby-itemscontainer'; export default function (view, params, tabContent) { - function getPageData(context) { - const key = getSavedQueryKey(context); + function getPageData() { + const key = getSavedQueryKey(); let pageData = data[key]; if (!pageData) { @@ -28,7 +28,7 @@ export default function (view, params, tabContent) { EnableImageTypes: 'Primary,Backdrop,Thumb', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || 'Poster' + view: userSettings.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { @@ -36,22 +36,18 @@ export default function (view, params, tabContent) { } pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + userSettings.loadQuerySettings(key, pageData.query); } return pageData; } - function getQuery(context) { - return getPageData(context).query; + function getQuery() { + return getPageData().query; } - function getSavedQueryKey(context) { - if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.getSavedQueryKey('episodes'); - } - - return context.savedQueryKey; + function getSavedQueryKey() { + return `${params.topParentId}-episodes`; } function onViewStyleChange() { @@ -72,7 +68,7 @@ export default function (view, params, tabContent) { function reloadItems(page) { loading.show(); isLoading = true; - const query = getQuery(page); + const query = getQuery(); ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) { function onNextPageClick() { if (isLoading) { @@ -156,7 +152,7 @@ export default function (view, params, tabContent) { itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); + userSettings.saveQuerySettings(getSavedQueryKey(), query); loading.hide(); isLoading = false; @@ -173,7 +169,7 @@ export default function (view, params, tabContent) { self.showFilterMenu = function () { import('../../components/filterdialog/filterdialog').then(({ default: FilterDialog }) => { const filterDialog = new FilterDialog({ - query: getQuery(tabContent), + query: getQuery(), mode: 'episodes', serverId: ApiClient.serverId() }); @@ -185,7 +181,7 @@ export default function (view, params, tabContent) { }; self.getCurrentViewStyle = function () { - return getPageData(tabContent).view; + return getPageData().view; }; function initPage(tabElement) { @@ -222,7 +218,7 @@ export default function (view, params, tabContent) { callback: function () { reloadItems(tabElement); }, - query: getQuery(tabElement), + query: getQuery(), button: e.target }); }); @@ -232,8 +228,8 @@ export default function (view, params, tabContent) { }); btnSelectView.addEventListener('layoutchange', function (e) { const viewStyle = e.detail.viewStyle; - getPageData(tabElement).view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(tabElement), viewStyle); + getPageData().view = viewStyle; + userSettings.saveViewSetting(getSavedQueryKey(), viewStyle); onViewStyleChange(); reloadItems(tabElement); }); diff --git a/src/controllers/shows/tvgenres.js b/src/controllers/shows/tvgenres.js index b9e02039e..061089af8 100644 --- a/src/controllers/shows/tvgenres.js +++ b/src/controllers/shows/tvgenres.js @@ -1,7 +1,7 @@ import escapeHtml from 'escape-html'; import layoutManager from '../../components/layoutManager'; import loading from '../../components/loading/loading'; -import libraryBrowser from '../../scripts/libraryBrowser'; +import * as userSettings from '../../scripts/settings/userSettings'; import cardBuilder from '../../components/cardbuilder/cardBuilder'; import lazyLoader from '../../components/lazyLoader/lazyLoaderIntersectionObserver'; import globalize from '../../scripts/globalize'; @@ -25,7 +25,7 @@ export default function (view, params, tabContent) { view: 'Poster' }; pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + userSettings.loadQuerySettings(key, pageData.query); } return pageData; @@ -36,7 +36,7 @@ export default function (view, params, tabContent) { } function getSavedQueryKey() { - return libraryBrowser.getSavedQueryKey('seriesgenres'); + return `${params.topParentId}-seriesgenres`; } function getPromise() { @@ -176,7 +176,7 @@ export default function (view, params, tabContent) { elem.innerHTML = html; lazyLoader.lazyChildren(elem, fillItemsContainer); - libraryBrowser.saveQueryValues(getSavedQueryKey(), query); + userSettings.saveQuerySettings(getSavedQueryKey(), query); loading.hide(); }); } @@ -199,7 +199,7 @@ export default function (view, params, tabContent) { self.setCurrentViewStyle = function (viewStyle) { getPageData().view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); + userSettings.saveViewSetting(getSavedQueryKey(), viewStyle); fullyReload(); }; diff --git a/src/controllers/shows/tvshows.js b/src/controllers/shows/tvshows.js index 3dea00f1b..f6751f38f 100644 --- a/src/controllers/shows/tvshows.js +++ b/src/controllers/shows/tvshows.js @@ -11,8 +11,8 @@ import Events from '../../utils/events.ts'; import '../../elements/emby-itemscontainer/emby-itemscontainer'; export default function (view, params, tabContent) { - function getPageData(context) { - const key = getSavedQueryKey(context); + function getPageData() { + const key = getSavedQueryKey(); let pageData = data[key]; if (!pageData) { @@ -27,7 +27,7 @@ export default function (view, params, tabContent) { EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || 'Poster' + view: userSettings.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { @@ -35,22 +35,18 @@ export default function (view, params, tabContent) { } pageData.query.ParentId = params.topParentId; - libraryBrowser.loadSavedQueryValues(key, pageData.query); + userSettings.loadQuerySettings(key, pageData.query); } return pageData; } - function getQuery(context) { - return getPageData(context).query; + function getQuery() { + return getPageData().query; } - function getSavedQueryKey(context) { - if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.getSavedQueryKey('series'); - } - - return context.savedQueryKey; + function getSavedQueryKey() { + return `${params.topParentId}-series`; } const onViewStyleChange = () => { @@ -71,7 +67,7 @@ export default function (view, params, tabContent) { const reloadItems = (page) => { loading.show(); isLoading = true; - const query = getQuery(page); + const query = getQuery(); ApiClient.getItems(ApiClient.getCurrentUserId(), query).then((result) => { function onNextPageClick() { if (isLoading) { @@ -185,7 +181,7 @@ export default function (view, params, tabContent) { const itemsContainer = tabContent.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; imageLoader.lazyChildren(itemsContainer); - libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); + userSettings.saveQuerySettings(getSavedQueryKey(), query); loading.hide(); isLoading = false; @@ -201,12 +197,12 @@ export default function (view, params, tabContent) { this.showFilterMenu = function () { import('../../components/filterdialog/filterdialog').then(({ default: FilterDialog }) => { const filterDialog = new FilterDialog({ - query: getQuery(tabContent), + query: getQuery(), mode: 'series', serverId: ApiClient.serverId() }); Events.on(filterDialog, 'filterchange', function () { - getQuery(tabContent).StartIndex = 0; + getQuery().StartIndex = 0; reloadItems(tabContent); }); filterDialog.show(); @@ -214,7 +210,7 @@ export default function (view, params, tabContent) { }; this.getCurrentViewStyle = function () { - return getPageData(tabContent).view; + return getPageData().view; }; const initPage = (tabElement) => { @@ -223,7 +219,7 @@ export default function (view, params, tabContent) { alphaPickerElement.addEventListener('alphavaluechanged', function (e) { const newValue = e.detail.value; - const query = getQuery(tabElement); + const query = getQuery(); if (newValue === '#') { query.NameLessThan = 'A'; delete query.NameStartsWith; @@ -274,10 +270,10 @@ export default function (view, params, tabContent) { id: 'PremiereDate,SortName' }], callback: function () { - getQuery(tabElement).StartIndex = 0; + getQuery().StartIndex = 0; reloadItems(tabElement); }, - query: getQuery(tabElement), + query: getQuery(), button: e.target }); }); @@ -287,9 +283,9 @@ export default function (view, params, tabContent) { }); btnSelectView.addEventListener('layoutchange', function (e) { const viewStyle = e.detail.viewStyle; - getPageData(tabElement).view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(tabElement), viewStyle); - getQuery(tabElement).StartIndex = 0; + getPageData().view = viewStyle; + userSettings.saveViewSetting(getSavedQueryKey(), viewStyle); + getQuery().StartIndex = 0; onViewStyleChange(); reloadItems(tabElement); }); @@ -300,7 +296,7 @@ export default function (view, params, tabContent) { this.renderTab = () => { reloadItems(tabContent); - this.alphaPicker?.updateControls(getQuery(tabContent)); + this.alphaPicker?.updateControls(getQuery()); }; } diff --git a/src/controllers/shows/tvstudios.js b/src/controllers/shows/tvstudios.js index 26ed743f7..3f75cd27f 100644 --- a/src/controllers/shows/tvstudios.js +++ b/src/controllers/shows/tvstudios.js @@ -1,9 +1,8 @@ import loading from '../../components/loading/loading'; -import libraryBrowser from '../../scripts/libraryBrowser'; import cardBuilder from '../../components/cardbuilder/cardBuilder'; function getQuery(params) { - const key = getSavedQueryKey(); + const key = getSavedQueryKey(params); let pageData = data[key]; if (!pageData) { @@ -23,8 +22,8 @@ function getQuery(params) { return pageData.query; } -function getSavedQueryKey() { - return libraryBrowser.getSavedQueryKey('studios'); +function getSavedQueryKey(params) { + return `${params.topParentId}-studios`; } function getPromise(context, params) { diff --git a/src/scripts/libraryBrowser.js b/src/scripts/libraryBrowser.js index ce4f6410a..abf148868 100644 --- a/src/scripts/libraryBrowser.js +++ b/src/scripts/libraryBrowser.js @@ -1,43 +1,5 @@ -import * as userSettings from './settings/userSettings'; import globalize from './globalize'; -export function getSavedQueryKey(modifier) { - return window.location.href.split('#')[0] + (modifier || ''); -} - -export function loadSavedQueryValues(key, query) { - let values = userSettings.get(key); - - if (values) { - values = JSON.parse(values); - return Object.assign(query, values); - } - - return query; -} - -export function saveQueryValues(key, query) { - const values = {}; - - if (query.SortBy) { - values.SortBy = query.SortBy; - } - - if (query.SortOrder) { - values.SortOrder = query.SortOrder; - } - - userSettings.set(key, JSON.stringify(values)); -} - -export function saveViewSetting (key, value) { - userSettings.set(key + '-_view', value); -} - -export function getSavedView (key) { - return userSettings.get(key + '-_view'); -} - export function showLayoutMenu (button, currentLayout, views) { let dispatchEvent = true; @@ -204,11 +166,6 @@ export function showSortMenu (options) { } const libraryBrowser = { - getSavedQueryKey, - loadSavedQueryValues, - saveQueryValues, - saveViewSetting, - getSavedView, showLayoutMenu, getQueryPagingHtml, showSortMenu diff --git a/src/scripts/playlists.js b/src/scripts/playlists.js index aba0c389a..b8b7380b5 100644 --- a/src/scripts/playlists.js +++ b/src/scripts/playlists.js @@ -9,8 +9,8 @@ import '../elements/emby-itemscontainer/emby-itemscontainer'; import Dashboard from '../utils/dashboard'; export default function (view) { - function getPageData(context) { - const key = getSavedQueryKey(context); + function getPageData() { + const key = getSavedQueryKey(); let pageData = data[key]; if (!pageData) { @@ -23,7 +23,7 @@ export default function (view) { Fields: 'PrimaryImageAspectRatio,SortName,CumulativeRunTimeTicks,CanDelete', StartIndex: 0 }, - view: libraryBrowser.getSavedView(key) || 'Poster' + view: userSettings.getSavedView(key) || 'Poster' }; if (userSettings.libraryPageSize() > 0) { @@ -31,22 +31,18 @@ export default function (view) { } pageData.query.ParentId = libraryMenu.getTopParentId(); - libraryBrowser.loadSavedQueryValues(key, pageData.query); + userSettings.loadQuerySettings(key, pageData.query); } return pageData; } - function getQuery(context) { - return getPageData(context).query; + function getQuery() { + return getPageData().query; } - function getSavedQueryKey(context) { - if (!context.savedQueryKey) { - context.savedQueryKey = libraryBrowser.getSavedQueryKey(); - } - - return context.savedQueryKey; + function getSavedQueryKey() { + return `${libraryMenu.getTopParentId()}-playlists`; } function showLoadingMessage() { @@ -58,7 +54,7 @@ export default function (view) { } function onViewStyleChange() { - const viewStyle = getPageData(view).view; + const viewStyle = getPageData().view; const itemsContainer = view.querySelector('.itemsContainer'); if (viewStyle == 'List') { @@ -74,7 +70,7 @@ export default function (view) { function reloadItems() { showLoadingMessage(); - const query = getQuery(view); + const query = getQuery(); const promise1 = ApiClient.getItems(Dashboard.getCurrentUserId(), query); // TODO: promise2 is unused, check if necessary. const promise2 = Dashboard.getCurrentUser(); @@ -83,7 +79,7 @@ export default function (view) { // TODO: Is the scroll necessary? window.scrollTo(0, 0); let html = ''; - const viewStyle = getPageData(view).view; + const viewStyle = getPageData().view; view.querySelector('.listTopPaging').innerHTML = libraryBrowser.getQueryPagingHtml({ startIndex: query.StartIndex, limit: query.Limit, @@ -172,14 +168,14 @@ export default function (view) { if (btnChangeLayout) { btnChangeLayout.addEventListener('layoutchange', function (e) { const layout = e.detail.viewStyle; - getPageData(view).view = layout; - libraryBrowser.saveViewSetting(getSavedQueryKey(view), layout); + getPageData().view = layout; + userSettings.saveViewSetting(getSavedQueryKey(), layout); onViewStyleChange(); reloadItems(); }); } - libraryBrowser.saveQueryValues(getSavedQueryKey(view), query); + userSettings.saveQuerySettings(getSavedQueryKey(), query); hideLoadingMessage(); }); } diff --git a/src/scripts/settings/userSettings.js b/src/scripts/settings/userSettings.js index a1d721c47..691b07cb4 100644 --- a/src/scripts/settings/userSettings.js +++ b/src/scripts/settings/userSettings.js @@ -546,6 +546,24 @@ export class UserSettings { return this.set(key, JSON.stringify(values)); } + /** + * Get view layout setting. + * @param {string} key - View Setting key. + * @return {string} View Setting value. + */ + getSavedView(key) { + return this.get(key + '-_view'); + } + + /** + * Set view layout setting. + * @param {string} key - View Setting key. + * @param {string} value - View Setting value. + */ + saveViewSetting(key, value) { + return this.set(key + '-_view', value); + } + /** * Get subtitle appearance settings. * @param {string|undefined} key - Settings key. @@ -652,3 +670,5 @@ export const setFilter = currentSettings.setFilter.bind(currentSettings); export const getFilter = currentSettings.getFilter.bind(currentSettings); export const customCss = currentSettings.customCss.bind(currentSettings); export const disableCustomCss = currentSettings.disableCustomCss.bind(currentSettings); +export const getSavedView = currentSettings.getSavedView.bind(currentSettings); +export const saveViewSetting = currentSettings.saveViewSetting.bind(currentSettings);