diff --git a/package.json b/package.json index c0ff158ec9..8a299555ea 100644 --- a/package.json +++ b/package.json @@ -84,9 +84,12 @@ "src/components/filedownloader.js", "src/components/filesystem.js", "src/components/input/keyboardnavigation.js", + "src/components/scrollManager.js", "src/components/sanatizefilename.js", "src/scripts/settings/webSettings.js", - "src/components/scrollManager.js" + "src/scripts/settings/appSettings.js", + "src/scripts/settings/userSettings.js", + "src/scripts/imagehelper.js" ], "plugins": [ "@babel/plugin-transform-modules-amd" diff --git a/src/controllers/user/display.js b/src/controllers/user/display.js index f348f28750..28d39b7fde 100644 --- a/src/controllers/user/display.js +++ b/src/controllers/user/display.js @@ -1,4 +1,4 @@ -define(["displaySettings", "userSettingsBuilder", "userSettings", "autoFocuser"], function (DisplaySettings, userSettingsBuilder, currentUserSettings, autoFocuser) { +define(["displaySettings", "userSettings", "autoFocuser"], function (DisplaySettings, userSettings, autoFocuser) { "use strict"; return function (view, params) { @@ -11,7 +11,7 @@ define(["displaySettings", "userSettingsBuilder", "userSettings", "autoFocuser"] var settingsInstance; var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); - var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettingsBuilder(); + var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new userSettings(); view.addEventListener("viewshow", function () { window.addEventListener("beforeunload", onBeforeUnload); @@ -22,7 +22,7 @@ define(["displaySettings", "userSettingsBuilder", "userSettings", "autoFocuser"] serverId: ApiClient.serverId(), userId: userId, element: view.querySelector(".settingsContainer"), - userSettings: userSettings, + userSettings: currentSettings, enableSaveButton: false, enableSaveConfirmation: false, autoFocus: autoFocuser.isEnabled() diff --git a/src/controllers/user/home.js b/src/controllers/user/home.js index 7f12efc7fb..dccf6e5060 100644 --- a/src/controllers/user/home.js +++ b/src/controllers/user/home.js @@ -1,4 +1,4 @@ -define(["homescreenSettings", "userSettingsBuilder", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (HomescreenSettings, userSettingsBuilder, dom, globalize, loading, currentUserSettings, autoFocuser) { +define(["homescreenSettings", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (HomescreenSettings, dom, globalize, loading, userSettings, autoFocuser) { "use strict"; return function (view, params) { @@ -11,7 +11,7 @@ define(["homescreenSettings", "userSettingsBuilder", "dom", "globalize", "loadin var homescreenSettingsInstance; var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); - var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettingsBuilder(); + var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new userSettings(); view.addEventListener("viewshow", function () { window.addEventListener("beforeunload", onBeforeUnload); @@ -22,7 +22,7 @@ define(["homescreenSettings", "userSettingsBuilder", "dom", "globalize", "loadin serverId: ApiClient.serverId(), userId: userId, element: view.querySelector(".homeScreenSettingsContainer"), - userSettings: userSettings, + userSettings: currentSettings, enableSaveButton: false, enableSaveConfirmation: false, autoFocus: autoFocuser.isEnabled() diff --git a/src/controllers/user/playback.js b/src/controllers/user/playback.js index 3def9d1931..8f48e0264b 100644 --- a/src/controllers/user/playback.js +++ b/src/controllers/user/playback.js @@ -1,4 +1,4 @@ -define(["playbackSettings", "userSettingsBuilder", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (PlaybackSettings, userSettingsBuilder, dom, globalize, loading, currentUserSettings, autoFocuser) { +define(["playbackSettings", "dom", "globalize", "loading", "userSettings", "autoFocuser", "listViewStyle"], function (PlaybackSettings, dom, globalize, loading, userSettings, autoFocuser) { "use strict"; return function (view, params) { @@ -11,7 +11,7 @@ define(["playbackSettings", "userSettingsBuilder", "dom", "globalize", "loading" var settingsInstance; var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); - var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettingsBuilder(); + var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new userSettings(); view.addEventListener("viewshow", function () { window.addEventListener("beforeunload", onBeforeUnload); @@ -22,7 +22,7 @@ define(["playbackSettings", "userSettingsBuilder", "dom", "globalize", "loading" serverId: ApiClient.serverId(), userId: userId, element: view.querySelector(".settingsContainer"), - userSettings: userSettings, + userSettings: currentSettings, enableSaveButton: false, enableSaveConfirmation: false, autoFocus: autoFocuser.isEnabled() diff --git a/src/controllers/user/subtitles.js b/src/controllers/user/subtitles.js index 1f1102194e..e2b98dc2dd 100644 --- a/src/controllers/user/subtitles.js +++ b/src/controllers/user/subtitles.js @@ -1,4 +1,4 @@ -define(["subtitleSettings", "userSettingsBuilder", "userSettings", "autoFocuser"], function (SubtitleSettings, userSettingsBuilder, currentUserSettings, autoFocuser) { +define(["subtitleSettings", "userSettings", "autoFocuser"], function (SubtitleSettings, userSettings, autoFocuser) { "use strict"; return function (view, params) { @@ -11,7 +11,7 @@ define(["subtitleSettings", "userSettingsBuilder", "userSettings", "autoFocuser" var subtitleSettingsInstance; var hasChanges; var userId = params.userId || ApiClient.getCurrentUserId(); - var userSettings = userId === ApiClient.getCurrentUserId() ? currentUserSettings : new userSettingsBuilder(); + var currentSettings = userId === ApiClient.getCurrentUserId() ? userSettings : new userSettings(); view.addEventListener("viewshow", function () { window.addEventListener("beforeunload", onBeforeUnload); @@ -22,7 +22,7 @@ define(["subtitleSettings", "userSettingsBuilder", "userSettings", "autoFocuser" serverId: ApiClient.serverId(), userId: userId, element: view.querySelector(".settingsContainer"), - userSettings: userSettings, + userSettings: currentSettings, enableSaveButton: false, enableSaveConfirmation: false, autoFocus: autoFocuser.isEnabled() diff --git a/src/scripts/imagehelper.js b/src/scripts/imagehelper.js index a8c4702698..51ecf439c7 100644 --- a/src/scripts/imagehelper.js +++ b/src/scripts/imagehelper.js @@ -1,7 +1,6 @@ -define(["browser"], function (browser) { - "use strict"; +import browser from 'browser'; - function getDeviceIcon(device) { + export function getDeviceIcon(device) { var baseUrl = "assets/img/devices/"; switch (device.AppName || device.Client) { case "Samsung Smart TV": @@ -42,7 +41,7 @@ define(["browser"], function (browser) { } } - function getLibraryIcon(library) { + export function getLibraryIcon(library) { switch (library) { case "movies": return "video_library"; @@ -71,8 +70,7 @@ define(["browser"], function (browser) { } } - return { + export default { getDeviceIcon: getDeviceIcon, getLibraryIcon: getLibraryIcon - }; -}); + } diff --git a/src/scripts/settings/appSettings.js b/src/scripts/settings/appSettings.js index 30fcf62e94..c654b0daa1 100644 --- a/src/scripts/settings/appSettings.js +++ b/src/scripts/settings/appSettings.js @@ -1,5 +1,5 @@ -define(['appStorage', 'events'], function (appStorage, events) { - 'use strict'; +import appStorage from 'appStorage'; +import events from 'events'; function getKey(name, userId) { if (userId) { @@ -9,26 +9,23 @@ define(['appStorage', 'events'], function (appStorage, events) { return name; } - function AppSettings() { - } - - AppSettings.prototype.enableAutoLogin = function (val) { + export function enableAutoLogin(val) { if (val != null) { this.set('enableAutoLogin', val.toString()); } return this.get('enableAutoLogin') !== 'false'; - }; + } - AppSettings.prototype.enableSystemExternalPlayers = function (val) { + export function enableSystemExternalPlayers(val) { if (val !== null) { this.set('enableSystemExternalPlayers', val.toString()); } return this.get('enableSystemExternalPlayers') === 'true'; - }; + } - AppSettings.prototype.enableAutomaticBitrateDetection = function (isInNetwork, mediaType, val) { + export function enableAutomaticBitrateDetection(isInNetwork, mediaType, val) { var key = 'enableautobitratebitrate-' + mediaType + '-' + isInNetwork; if (val != null) { if (isInNetwork && mediaType === 'Audio') { @@ -43,9 +40,9 @@ define(['appStorage', 'events'], function (appStorage, events) { } else { return this.get(key) !== 'false'; } - }; + } - AppSettings.prototype.maxStreamingBitrate = function (isInNetwork, mediaType, val) { + export function maxStreamingBitrate(isInNetwork, mediaType, val) { var key = 'maxbitrate-' + mediaType + '-' + isInNetwork; if (val != null) { if (isInNetwork && mediaType === 'Audio') { @@ -61,43 +58,43 @@ define(['appStorage', 'events'], function (appStorage, events) { } else { return parseInt(this.get(key) || '0') || 1500000; } - }; + } - AppSettings.prototype.maxStaticMusicBitrate = function (val) { + export function maxStaticMusicBitrate(val) { if (val !== undefined) { this.set('maxStaticMusicBitrate', val); } var defaultValue = 320000; return parseInt(this.get('maxStaticMusicBitrate') || defaultValue.toString()) || defaultValue; - }; + } - AppSettings.prototype.maxChromecastBitrate = function (val) { + export function maxChromecastBitrate(val) { if (val != null) { this.set('chromecastBitrate1', val); } val = this.get('chromecastBitrate1'); return val ? parseInt(val) : null; - }; + } - AppSettings.prototype.syncOnlyOnWifi = function (val) { + export function syncOnlyOnWifi(val) { if (val != null) { this.set('syncOnlyOnWifi', val.toString()); } return this.get('syncOnlyOnWifi') !== 'false'; - }; + } - AppSettings.prototype.syncPath = function (val) { + export function syncPath(val) { if (val != null) { this.set('syncPath', val); } return this.get('syncPath'); - }; + } - AppSettings.prototype.cameraUploadServers = function (val) { + export function cameraUploadServers(val) { if (val != null) { this.set('cameraUploadServers', val.join(',')); } @@ -108,28 +105,40 @@ define(['appStorage', 'events'], function (appStorage, events) { } return []; - }; + } - AppSettings.prototype.runAtStartup = function (val) { + export function runAtStartup(val) { if (val != null) { this.set('runatstartup', val.toString()); } return this.get('runatstartup') === 'true'; - }; + } - AppSettings.prototype.set = function (name, value, userId) { + export function set(name, value, userId) { var currentValue = this.get(name, userId); appStorage.setItem(getKey(name, userId), value); if (currentValue !== value) { events.trigger(this, 'change', [name]); } - }; + } - AppSettings.prototype.get = function (name, userId) { + export function get(name, userId) { return appStorage.getItem(getKey(name, userId)); - }; + } - return new AppSettings(); -}); + export default { + enableAutoLogin: enableAutoLogin, + enableSystemExternalPlayers: enableSystemExternalPlayers, + enableAutomaticBitrateDetection: enableAutomaticBitrateDetection, + maxStreamingBitrate: maxStreamingBitrate, + maxStaticMusicBitrate: maxStaticMusicBitrate, + maxChromecastBitrate: maxChromecastBitrate, + syncOnlyOnWifi: syncOnlyOnWifi, + syncPath: syncPath, + cameraUploadServers: cameraUploadServers, + runAtStartup: runAtStartup, + set: set, + get: get + } diff --git a/src/scripts/settings/userSettingsBuilder.js b/src/scripts/settings/userSettings.js similarity index 74% rename from src/scripts/settings/userSettingsBuilder.js rename to src/scripts/settings/userSettings.js index 1a35434c6d..28d2ef3154 100644 --- a/src/scripts/settings/userSettingsBuilder.js +++ b/src/scripts/settings/userSettings.js @@ -1,5 +1,5 @@ -define(['appSettings', 'events'], function (appSettings, events) { - 'use strict'; +import appSettings from 'appSettings'; +import events from 'events'; function onSaveTimeout() { var self = this; @@ -15,10 +15,7 @@ define(['appSettings', 'events'], function (appSettings, events) { instance.saveTimeout = setTimeout(onSaveTimeout.bind(instance), 50); } - function UserSettings() { - } - - UserSettings.prototype.setUserInfo = function (userId, apiClient) { + export function setUserInfo(userId, apiClient) { if (this.saveTimeout) { clearTimeout(this.saveTimeout); } @@ -39,15 +36,15 @@ define(['appSettings', 'events'], function (appSettings, events) { }); }; - UserSettings.prototype.getData = function () { + export function getData() { return this.displayPrefs; }; - UserSettings.prototype.importFrom = function (instance) { + export function importFrom(instance) { this.displayPrefs = instance.getData(); }; - UserSettings.prototype.set = function (name, value, enableOnServer) { + export function set(name, value, enableOnServer) { var userId = this.currentUserId; var currentValue = this.get(name, enableOnServer); var result = appSettings.set(name, value, userId); @@ -64,7 +61,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return result; }; - UserSettings.prototype.get = function (name, enableOnServer) { + export function get(name, enableOnServer) { var userId = this.currentUserId; if (enableOnServer !== false && this.displayPrefs) { return this.displayPrefs.CustomPrefs[name]; @@ -73,7 +70,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return appSettings.get(name, userId); }; - UserSettings.prototype.serverConfig = function (config) { + export function serverConfig(config) { var apiClient = this.currentApiClient; if (config) { return apiClient.updateUserConfiguration(this.currentUserId, config); @@ -84,7 +81,7 @@ define(['appSettings', 'events'], function (appSettings, events) { }); }; - UserSettings.prototype.enableCinemaMode = function (val) { + export function enableCinemaMode(val) { if (val != null) { return this.set('enableCinemaMode', val.toString(), false); } @@ -93,7 +90,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return val !== 'false'; }; - UserSettings.prototype.enableNextVideoInfoOverlay = function (val) { + export function enableNextVideoInfoOverlay(val) { if (val != null) { return this.set('enableNextVideoInfoOverlay', val.toString()); } @@ -102,7 +99,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return val !== 'false'; }; - UserSettings.prototype.enableThemeSongs = function (val) { + export function enableThemeSongs(val) { if (val != null) { return this.set('enableThemeSongs', val.toString(), false); } @@ -111,7 +108,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return val !== 'false'; }; - UserSettings.prototype.enableThemeVideos = function (val) { + export function enableThemeVideos(val) { if (val != null) { return this.set('enableThemeVideos', val.toString(), false); } @@ -120,7 +117,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return val !== 'false'; }; - UserSettings.prototype.enableFastFadein = function (val) { + export function enableFastFadein(val) { if (val != null) { return this.set('fastFadein', val.toString(), false); } @@ -129,7 +126,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return val !== 'false'; }; - UserSettings.prototype.enableBackdrops = function (val) { + export function enableBackdrops(val) { if (val != null) { return this.set('enableBackdrops', val.toString(), false); } @@ -138,7 +135,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return val !== 'false'; }; - UserSettings.prototype.language = function (val) { + export function language(val) { if (val != null) { return this.set('language', val.toString(), false); } @@ -146,7 +143,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return this.get('language', false); }; - UserSettings.prototype.dateTimeLocale = function (val) { + export function dateTimeLocale(val) { if (val != null) { return this.set('datetimelocale', val.toString(), false); } @@ -154,7 +151,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return this.get('datetimelocale', false); }; - UserSettings.prototype.skipBackLength = function (val) { + export function skipBackLength(val) { if (val != null) { return this.set('skipBackLength', val.toString()); } @@ -162,7 +159,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return parseInt(this.get('skipBackLength') || '10000'); }; - UserSettings.prototype.skipForwardLength = function (val) { + export function skipForwardLength(val) { if (val != null) { return this.set('skipForwardLength', val.toString()); } @@ -170,7 +167,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return parseInt(this.get('skipForwardLength') || '30000'); }; - UserSettings.prototype.dashboardTheme = function (val) { + export function dashboardTheme(val) { if (val != null) { return this.set('dashboardTheme', val); } @@ -178,7 +175,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return this.get('dashboardTheme'); }; - UserSettings.prototype.skin = function (val) { + export function skin(val) { if (val != null) { return this.set('skin', val, false); } @@ -186,7 +183,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return this.get('skin', false); }; - UserSettings.prototype.theme = function (val) { + export function theme(val) { if (val != null) { return this.set('appTheme', val, false); } @@ -194,7 +191,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return this.get('appTheme', false); }; - UserSettings.prototype.screensaver = function (val) { + export function screensaver(val) { if (val != null) { return this.set('screensaver', val, false); } @@ -202,7 +199,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return this.get('screensaver', false); }; - UserSettings.prototype.soundEffects = function (val) { + export function soundEffects(val) { if (val != null) { return this.set('soundeffects', val, false); } @@ -210,7 +207,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return this.get('soundeffects', false); }; - UserSettings.prototype.loadQuerySettings = function (key, query) { + export function loadQuerySettings(key, query) { var values = this.get(key); if (values) { values = JSON.parse(values); @@ -220,7 +217,7 @@ define(['appSettings', 'events'], function (appSettings, events) { return query; }; - UserSettings.prototype.saveQuerySettings = function (key, query) { + export function saveQuerySettings(key, query) { var values = {}; if (query.SortBy) { values.SortBy = query.SortBy; @@ -233,23 +230,20 @@ define(['appSettings', 'events'], function (appSettings, events) { return this.set(key, JSON.stringify(values)); }; - UserSettings.prototype.getSubtitleAppearanceSettings = function (key) { + export function getSubtitleAppearanceSettings(key) { key = key || 'localplayersubtitleappearance3'; return JSON.parse(this.get(key, false) || '{}'); }; - UserSettings.prototype.setSubtitleAppearanceSettings = function (value, key) { + export function setSubtitleAppearanceSettings(value, key) { key = key || 'localplayersubtitleappearance3'; return this.set(key, JSON.stringify(value), false); }; - UserSettings.prototype.setFilter = function (key, value) { + export function setFilter(key, value) { return this.set(key, value, true); }; - UserSettings.prototype.getFilter = function (key) { + export function getFilter(key) { return this.get(key, true); }; - - return UserSettings; -}); diff --git a/src/scripts/site.js b/src/scripts/site.js index 513d0c0754..5c10cecdd0 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -768,10 +768,7 @@ var AppInfo = {}; define("webSettings", [scriptsPath + "/settings/webSettings"], returnFirstDependency); define("appSettings", [scriptsPath + "/settings/appSettings"], returnFirstDependency); - define("userSettingsBuilder", [scriptsPath + "/settings/userSettingsBuilder"], returnFirstDependency); - define("userSettings", ["userSettingsBuilder"], function(userSettingsBuilder) { - return new userSettingsBuilder(); - }); + define("userSettings", [scriptsPath + "/settings/userSettings"], returnFirstDependency); define("chromecastHelper", [componentsPath + "/chromecast/chromecasthelpers"], returnFirstDependency); define("mediaSession", [componentsPath + "/playback/mediasession"], returnFirstDependency);