mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
77 lines
2.3 KiB
JavaScript
77 lines
2.3 KiB
JavaScript
import * as userSettings from '../scripts/settings/userSettings';
|
|
import loading from '../components/loading/loading';
|
|
import focusManager from '../components/focusManager';
|
|
import homeSections from '../components/homesections/homesections';
|
|
import '../elements/emby-itemscontainer/emby-itemscontainer';
|
|
import ServerConnections from '../components/ServerConnections';
|
|
|
|
class HomeTab {
|
|
constructor(view, params) {
|
|
this.view = view;
|
|
this.params = params;
|
|
this.apiClient = ServerConnections.currentApiClient();
|
|
this.sectionsContainer = view.querySelector('.sections');
|
|
view.querySelector('.sections').addEventListener('settingschange', onHomeScreenSettingsChanged.bind(this));
|
|
}
|
|
onResume(options) {
|
|
if (this.sectionsRendered) {
|
|
const sectionsContainer = this.sectionsContainer;
|
|
|
|
if (sectionsContainer) {
|
|
return homeSections.resume(sectionsContainer, options);
|
|
}
|
|
|
|
return Promise.resolve();
|
|
}
|
|
|
|
loading.show();
|
|
const view = this.view;
|
|
const apiClient = this.apiClient;
|
|
this.destroyHomeSections();
|
|
this.sectionsRendered = true;
|
|
return apiClient.getCurrentUser()
|
|
.then(user => homeSections.loadSections(view.querySelector('.sections'), apiClient, user, userSettings))
|
|
.then(() => {
|
|
if (options.autoFocus) {
|
|
focusManager.autoFocus(view);
|
|
}
|
|
}).catch(err => {
|
|
console.error(err);
|
|
}).finally(() => {
|
|
loading.hide();
|
|
});
|
|
}
|
|
onPause() {
|
|
const sectionsContainer = this.sectionsContainer;
|
|
|
|
if (sectionsContainer) {
|
|
homeSections.pause(sectionsContainer);
|
|
}
|
|
}
|
|
destroy() {
|
|
this.view = null;
|
|
this.params = null;
|
|
this.apiClient = null;
|
|
this.destroyHomeSections();
|
|
this.sectionsContainer = null;
|
|
}
|
|
destroyHomeSections() {
|
|
const sectionsContainer = this.sectionsContainer;
|
|
|
|
if (sectionsContainer) {
|
|
homeSections.destroySections(sectionsContainer);
|
|
}
|
|
}
|
|
}
|
|
|
|
function onHomeScreenSettingsChanged() {
|
|
this.sectionsRendered = false;
|
|
|
|
if (!this.paused) {
|
|
this.onResume({
|
|
refresh: true
|
|
});
|
|
}
|
|
}
|
|
|
|
export default HomeTab;
|