1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Merge remote-tracking branch 'upstream/master' into global-globalize

This commit is contained in:
ferferga 2020-04-26 14:44:01 +02:00
commit 54eb916cfe
177 changed files with 4742 additions and 2819 deletions

View file

@ -8,7 +8,7 @@
var script = document.createElement("script");
if (self.dashboardVersion) {
src += "?v=" + self.dashboardVersion;
src += `?v=${self.dashboardVersion}`;
}
script.src = src;
@ -29,6 +29,16 @@
);
}
try {
Promise.resolve();
} catch (ex) {
// this checks for several cases actually, typical is
// Promise() being missing on some legacy browser, and a funky one
// is Promise() present but buggy on WebOS 2
window.Promise = undefined;
self.Promise = undefined;
}
if (!self.Promise) {
// Load Promise polyfill if they are not natively supported
injectScriptElement(

View file

@ -1,16 +1,18 @@
define(["backdrop", "userSettings", "libraryMenu"], function (backdrop, userSettings, libraryMenu) {
"use strict";
var cache = {};
function enabled() {
return userSettings.enableBackdrops();
}
function getBackdropItemIds(apiClient, userId, types, parentId) {
var key = "backdrops2_" + userId + (types || "") + (parentId || "");
var key = `backdrops2_${userId + (types || "") + (parentId || "")}`;
var data = cache[key];
if (data) {
console.debug("Found backdrop id list in cache. Key: " + key);
console.debug(`Found backdrop id list in cache. Key: ${key}`);
data = JSON.parse(data);
return Promise.resolve(data);
}
@ -54,7 +56,6 @@ define(["backdrop", "userSettings", "libraryMenu"], function (backdrop, userSett
}
}
var cache = {};
pageClassOn("pageshow", "page", function () {
var page = this;

View file

@ -77,10 +77,10 @@ define([], function () {
var camel = prop.replace(/-([a-z]|[0-9])/ig, function (all, letter) {
return (letter + '').toUpperCase();
});
// Check if the property is supported
var support = (camel in el.style);
// Create test element
var el = document.createElement('div');
// Check if the property is supported
var support = (camel in el.style);
// Assign the property and value to invoke
// the CSS interpreter
el.style.cssText = prop + ':' + value;
@ -292,7 +292,8 @@ define([], function () {
}
if (typeof document !== 'undefined') {
if (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
/* eslint-disable-next-line compat/compat */
if (('ontouchstart' in window) || (navigator.maxTouchPoints > 0)) {
browser.touch = true;
}
}

62
src/scripts/dfnshelper.js Normal file
View file

@ -0,0 +1,62 @@
import { ar, be, bg, ca, cs, da, de, el, enGB, enUS, es, faIR, fi, fr, frCA, he, hi, hr, hu, id, it, ja, kk, ko, lt, ms, nb,
nl, pl, ptBR, pt, ro, ru, sk, sl, sv, tr, uk, vi, zhCN, zhTW } from 'date-fns/locale';
import globalize from 'globalize';
const dateLocales = (locale) => ({
'ar': ar,
'be-by': be,
'bg-bg': bg,
'ca': ca,
'cs': cs,
'da': da,
'de': de,
'el': el,
'en-gb': enGB,
'en-us': enUS,
'es': es,
'es-ar': es,
'es-mx': es,
'fa': faIR,
'fi': fi,
'fr': fr,
'fr-ca': frCA,
'gsw': de,
'he': he,
'hi-in': hi,
'hr': hr,
'hu': hu,
'id': id,
'it': it,
'ja': ja,
'kk': kk,
'ko': ko,
'lt-lt': lt,
'ms': ms,
'nb': nb,
'nl': nl,
'pl': pl,
'pt-br': ptBR,
'pt-pt': pt,
'ro': ro,
'ru': ru,
'sk': sk,
'sl-si': sl,
'sv': sv,
'tr': tr,
'uk': uk,
'vi': vi,
'zh-cn': zhCN,
'zh-hk': zhCN,
'zh-tw': zhTW
})[locale];
export function getLocale() {
return dateLocales(globalize.getCurrentLocale()) || enUS;
}
export const localeWithSuffix = { addSuffix: true, locale: getLocale() };
export default {
getLocale: getLocale,
localeWithSuffix: localeWithSuffix
};

View file

@ -1,4 +1,4 @@
define(['connectionManager', 'userSettings', 'events'], function (connectionManager, userSettings, events) {
define(['userSettings', 'events'], function (userSettings, events) {
'use strict';
var fallbackCulture = 'en-us';
@ -253,7 +253,6 @@ define(['connectionManager', 'userSettings', 'events'], function (connectionMana
updateCurrentCulture();
events.on(connectionManager, 'localusersignedin', updateCurrentCulture);
events.on(userSettings, 'change', function (e, name) {
if (name === 'language' || name === 'datetimelocale') {
updateCurrentCulture();
@ -269,6 +268,7 @@ define(['connectionManager', 'userSettings', 'events'], function (connectionMana
defaultModule: defaultModule,
getCurrentLocale: getCurrentLocale,
getCurrentDateTimeLocale: getCurrentDateTimeLocale,
register: register
register: register,
updateCurrentCulture: updateCurrentCulture
};
});

View file

@ -1,7 +1,8 @@
define(["browser"], function (browser) {
"use strict";
/* eslint-disable indent */
function getDeviceIcon(device) {
import browser from 'browser';
export function getDeviceIcon(device) {
var baseUrl = "assets/img/devices/";
switch (device.AppName || device.Client) {
case "Samsung Smart TV":
@ -13,6 +14,7 @@ define(["browser"], function (browser) {
case "Kodi":
return baseUrl + "kodi.svg";
case "Jellyfin Android":
case "Android TV":
return baseUrl + "android.svg";
case "Jellyfin Web":
switch (device.Name || device.DeviceName) {
@ -42,7 +44,7 @@ define(["browser"], function (browser) {
}
}
function getLibraryIcon(library) {
export function getLibraryIcon(library) {
switch (library) {
case "movies":
return "video_library";
@ -71,8 +73,9 @@ define(["browser"], function (browser) {
}
}
return {
getDeviceIcon: getDeviceIcon,
getLibraryIcon: getLibraryIcon
};
});
/* eslint-enable indent */
export default {
getDeviceIcon: getDeviceIcon,
getLibraryIcon: getLibraryIcon
};

View file

@ -1,44 +1,49 @@
define(['playbackManager', 'focusManager', 'appRouter', 'dom', 'apphost'], function (playbackManager, focusManager, appRouter, dom, appHost) {
'use strict';
import playbackManager from 'playbackManager';
import focusManager from 'focusManager';
import appRouter from 'appRouter';
import dom from 'dom';
import appHost from 'apphost';
var lastInputTime = new Date().getTime();
/* eslint-disable indent */
function notify() {
let lastInputTime = new Date().getTime();
export function notify() {
lastInputTime = new Date().getTime();
handleCommand('unknown');
}
function notifyMouseMove() {
export function notifyMouseMove() {
lastInputTime = new Date().getTime();
}
function idleTime() {
export function idleTime() {
return new Date().getTime() - lastInputTime;
}
function select(sourceElement) {
export function select(sourceElement) {
sourceElement.click();
}
var eventListenerCount = 0;
function on(scope, fn) {
let eventListenerCount = 0;
export function on(scope, fn) {
eventListenerCount++;
dom.addEventListener(scope, 'command', fn, {});
}
function off(scope, fn) {
export function off(scope, fn) {
if (eventListenerCount) {
eventListenerCount--;
}
dom.removeEventListener(scope, 'command', fn, {});
}
var commandTimes = {};
let commandTimes = {};
function checkCommandTime(command) {
var last = commandTimes[command] || 0;
var now = new Date().getTime();
const last = commandTimes[command] || 0;
const now = new Date().getTime();
if ((now - last) < 1000) {
return false;
@ -48,11 +53,11 @@ define(['playbackManager', 'focusManager', 'appRouter', 'dom', 'apphost'], funct
return true;
}
function handleCommand(name, options) {
export function handleCommand(commandName, options) {
lastInputTime = new Date().getTime();
var sourceElement = (options ? options.sourceElement : null);
let sourceElement = (options ? options.sourceElement : null);
if (sourceElement) {
sourceElement = focusManager.focusableParent(sourceElement);
@ -61,7 +66,7 @@ define(['playbackManager', 'focusManager', 'appRouter', 'dom', 'apphost'], funct
if (!sourceElement) {
sourceElement = document.activeElement || window;
var dlg = document.querySelector('.dialogContainer .dialog.opened');
const dlg = document.querySelector('.dialogContainer .dialog.opened');
if (dlg && (!sourceElement || !dlg.contains(sourceElement))) {
sourceElement = dlg;
@ -69,183 +74,182 @@ define(['playbackManager', 'focusManager', 'appRouter', 'dom', 'apphost'], funct
}
if (eventListenerCount) {
var customEvent = new CustomEvent("command", {
const customEvent = new CustomEvent("command", {
detail: {
command: name
command: commandName
},
bubbles: true,
cancelable: true
});
var eventResult = sourceElement.dispatchEvent(customEvent);
const eventResult = sourceElement.dispatchEvent(customEvent);
if (!eventResult) {
// event cancelled
return;
}
}
switch (name) {
case 'up':
const keyActions = (command) => ({
'up': () => {
focusManager.moveUp(sourceElement);
break;
case 'down':
},
'down': () => {
focusManager.moveDown(sourceElement);
break;
case 'left':
},
'left': () => {
focusManager.moveLeft(sourceElement);
break;
case 'right':
},
'right': () => {
focusManager.moveRight(sourceElement);
break;
case 'home':
},
'home': () => {
appRouter.goHome();
break;
case 'settings':
},
'settings': () => {
appRouter.showSettings();
break;
case 'back':
},
'back': () => {
if (appRouter.canGoBack()) {
appRouter.back();
} else if (appHost.supports('exit')) {
appHost.exit();
}
break;
case 'forward':
break;
case 'select':
},
'select': () => {
select(sourceElement);
break;
case 'pageup':
break;
case 'pagedown':
break;
case 'end':
break;
case 'menu':
break;
case 'info':
break;
case 'nextchapter':
},
'nextchapter': () => {
playbackManager.nextChapter();
break;
case 'next':
case 'nexttrack':
},
'next': () => {
playbackManager.nextTrack();
break;
case 'previous':
case 'previoustrack':
},
'nexttrack': () => {
playbackManager.nextTrack();
},
'previous': () => {
playbackManager.previousTrack();
break;
case 'previouschapter':
},
'previoustrack': () => {
playbackManager.previousTrack();
},
'previouschapter': () => {
playbackManager.previousChapter();
break;
case 'guide':
},
'guide': () => {
appRouter.showGuide();
break;
case 'recordedtv':
},
'recordedtv': () => {
appRouter.showRecordedTV();
break;
case 'record':
break;
case 'livetv':
},
'livetv': () => {
appRouter.showLiveTV();
break;
case 'mute':
},
'mute': () => {
playbackManager.setMute(true);
break;
case 'unmute':
},
'unmute': () => {
playbackManager.setMute(false);
break;
case 'togglemute':
},
'togglemute': () => {
playbackManager.toggleMute();
break;
case 'channelup':
},
'channelup': () => {
playbackManager.channelUp();
break;
case 'channeldown':
},
'channeldown': () => {
playbackManager.channelDown();
break;
case 'volumedown':
},
'volumedown': () => {
playbackManager.volumeDown();
break;
case 'volumeup':
},
'volumeup': () => {
playbackManager.volumeUp();
break;
case 'play':
},
'play': () => {
playbackManager.unpause();
break;
case 'pause':
},
'pause': () => {
playbackManager.pause();
break;
case 'playpause':
},
'playpause': () => {
playbackManager.playPause();
break;
case 'stop':
},
'stop': () => {
if (checkCommandTime('stop')) {
playbackManager.stop();
}
break;
case 'changezoom':
},
'changezoom': () => {
playbackManager.toggleAspectRatio();
break;
case 'changeaudiotrack':
},
'changeaudiotrack': () => {
playbackManager.changeAudioStream();
break;
case 'changesubtitletrack':
},
'changesubtitletrack': () => {
playbackManager.changeSubtitleStream();
break;
case 'search':
},
'search': () => {
appRouter.showSearch();
break;
case 'favorites':
},
'favorites': () => {
appRouter.showFavorites();
break;
case 'fastforward':
},
'fastforward': () => {
playbackManager.fastForward();
break;
case 'rewind':
},
'rewind': () => {
playbackManager.rewind();
break;
case 'togglefullscreen':
},
'togglefullscreen': () => {
playbackManager.toggleFullscreen();
break;
case 'disabledisplaymirror':
},
'disabledisplaymirror': () => {
playbackManager.enableDisplayMirroring(false);
break;
case 'enabledisplaymirror':
},
'enabledisplaymirror': () => {
playbackManager.enableDisplayMirroring(true);
break;
case 'toggledisplaymirror':
},
'toggledisplaymirror': () => {
playbackManager.toggleDisplayMirroring();
break;
case 'nowplaying':
},
'nowplaying': () => {
appRouter.showNowPlaying();
break;
case 'repeatnone':
},
'repeatnone': () => {
playbackManager.setRepeatMode('RepeatNone');
break;
case 'repeatall':
},
'repeatall': () => {
playbackManager.setRepeatMode('RepeatAll');
break;
case 'repeatone':
},
'repeatone': () => {
playbackManager.setRepeatMode('RepeatOne');
break;
default:
break;
}
})[command];
const action = keyActions(commandName);
if (action !== undefined) {
action.call();
} else {
console.debug(`inputManager: tried to process command with no action assigned: ${commandName}`);
}
}
// Alias for backward compatibility
export const trigger = handleCommand;
dom.addEventListener(document, 'click', notify, {
passive: true
});
return {
trigger: handleCommand,
handle: handleCommand,
notify: notify,
notifyMouseMove: notifyMouseMove,
idleTime: idleTime,
on: on,
off: off
};
});
/* eslint-enable indent */
export default {
trigger: handleCommand,
handle: handleCommand,
notify: notify,
notifyMouseMove: notifyMouseMove,
idleTime: idleTime,
on: on,
off: off
};

View file

@ -83,7 +83,7 @@ define(["userSettings", "globalize"], function (userSettings, globalize) {
if (html += '<div class="listPaging">', showControls) {
html += '<span style="vertical-align:middle;">';
html += (totalRecordCount ? startIndex + 1 : 0) + "-" + recordsEnd + " of " + totalRecordCount;
html += Globalize.translate("ListPaging", (totalRecordCount ? startIndex + 1 : 0), recordsEnd, totalRecordCount);
html += "</span>";
}

View file

@ -73,7 +73,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "
}
if (user && user.localUser) {
if (headerHomeButton && !layoutManager.mobile) {
if (headerHomeButton) {
headerHomeButton.classList.remove("hide");
}
@ -733,8 +733,8 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "
function initHeadRoom(elem) {
require(["headroom"], function (Headroom) {
var headroom = new Headroom([], {});
headroom.add(elem);
var headroom = new Headroom(elem);
headroom.init();
});
}

View file

@ -8,7 +8,7 @@ define(["listView"], function (listView) {
EnableImageTypes: "Primary,Backdrop,Banner,Thumb",
UserId: ApiClient.getCurrentUserId()
};
return ApiClient.getJSON(ApiClient.getUrl("Playlists/" + itemId + "/Items", query));
return ApiClient.getJSON(ApiClient.getUrl(`Playlists/${itemId}/Items`, query));
};
}

View file

@ -1,4 +1,4 @@
define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", "apphost", "imageLoader", "emby-itemscontainer"], function (loading, listView, cardBuilder, libraryMenu, libraryBrowser, appHost, imageLoader) {
define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", "apphost", "imageLoader", "userSettings", "emby-itemscontainer"], function (loading, listView, cardBuilder, libraryMenu, libraryBrowser, appHost, imageLoader, userSettings) {
"use strict";
return function (view, params) {
@ -14,11 +14,15 @@ define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", "
IncludeItemTypes: "Playlist",
Recursive: true,
Fields: "PrimaryImageAspectRatio,SortName,CumulativeRunTimeTicks,CanDelete",
StartIndex: 0,
Limit: 100
StartIndex: 0
},
view: libraryBrowser.getSavedView(key) || "Poster"
};
if (userSettings.libraryPageSize() > 0) {
pageData.query['Limit'] = userSettings.libraryPageSize();
}
pageData.query.ParentId = libraryMenu.getTopParentId();
libraryBrowser.loadSavedQueryValues(key, pageData.query);
}
@ -137,7 +141,9 @@ define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", "
if (btnNextPage) {
btnNextPage.addEventListener("click", function () {
query.StartIndex += query.Limit;
if (userSettings.libraryPageSize() > 0) {
query.StartIndex += query.Limit;
}
reloadItems();
});
}
@ -146,7 +152,9 @@ define(["loading", "listView", "cardBuilder", "libraryMenu", "libraryBrowser", "
if (btnPreviousPage) {
btnPreviousPage.addEventListener("click", function () {
query.StartIndex -= query.Limit;
if (userSettings.libraryPageSize() > 0) {
query.StartIndex = Math.max(0, query.StartIndex - query.Limit);
}
reloadItems();
});
}

View file

@ -1,5 +1,7 @@
define(['appStorage', 'events'], function (appStorage, events) {
'use strict';
/* eslint-disable indent */
import appStorage from 'appStorage';
import events from 'events';
function getKey(name, userId) {
if (userId) {
@ -9,26 +11,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 +42,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 +60,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 +107,42 @@ 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();
});
/* eslint-enable indent */
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
};

View file

@ -1,5 +1,7 @@
define(['appSettings', 'events'], function (appSettings, events) {
'use strict';
/* eslint-disable indent */
import appSettings from 'appSettings';
import events from 'events';
function onSaveTimeout() {
var self = this;
@ -15,10 +17,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);
}
@ -37,17 +36,17 @@ define(['appSettings', 'events'], function (appSettings, events) {
result.CustomPrefs = result.CustomPrefs || {};
self.displayPrefs = result;
});
};
}
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);
@ -62,18 +61,18 @@ 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];
}
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);
@ -82,135 +81,149 @@ define(['appSettings', 'events'], function (appSettings, events) {
return apiClient.getUser(this.currentUserId).then(function (user) {
return user.Configuration;
});
};
}
UserSettings.prototype.enableCinemaMode = function (val) {
export function enableCinemaMode(val) {
if (val != null) {
return this.set('enableCinemaMode', val.toString(), false);
}
val = this.get('enableCinemaMode', false);
return val !== 'false';
};
}
UserSettings.prototype.enableNextVideoInfoOverlay = function (val) {
export function enableNextVideoInfoOverlay(val) {
if (val != null) {
return this.set('enableNextVideoInfoOverlay', val.toString());
}
val = this.get('enableNextVideoInfoOverlay', false);
return val !== 'false';
};
}
UserSettings.prototype.enableThemeSongs = function (val) {
export function enableThemeSongs(val) {
if (val != null) {
return this.set('enableThemeSongs', val.toString(), false);
}
val = this.get('enableThemeSongs', false);
return val !== 'false';
};
}
UserSettings.prototype.enableThemeVideos = function (val) {
export function enableThemeVideos(val) {
if (val != null) {
return this.set('enableThemeVideos', val.toString(), false);
}
val = this.get('enableThemeVideos', false);
return val !== 'false';
};
}
UserSettings.prototype.enableFastFadein = function (val) {
export function enableFastFadein(val) {
if (val != null) {
return this.set('fastFadein', val.toString(), false);
}
val = this.get('fastFadein', false);
return val !== 'false';
};
}
UserSettings.prototype.enableBackdrops = function (val) {
export function enableBackdrops(val) {
if (val != null) {
return this.set('enableBackdrops', val.toString(), false);
}
val = this.get('enableBackdrops', false);
return val !== 'false';
};
}
UserSettings.prototype.language = function (val) {
export function language(val) {
if (val != null) {
return this.set('language', val.toString(), false);
}
return this.get('language', false);
};
}
UserSettings.prototype.dateTimeLocale = function (val) {
export function dateTimeLocale(val) {
if (val != null) {
return this.set('datetimelocale', val.toString(), false);
}
return this.get('datetimelocale', false);
};
}
UserSettings.prototype.skipBackLength = function (val) {
export function skipBackLength(val) {
if (val != null) {
return this.set('skipBackLength', val.toString());
}
return parseInt(this.get('skipBackLength') || '10000');
};
}
UserSettings.prototype.skipForwardLength = function (val) {
export function skipForwardLength(val) {
if (val != null) {
return this.set('skipForwardLength', val.toString());
}
return parseInt(this.get('skipForwardLength') || '30000');
};
}
UserSettings.prototype.dashboardTheme = function (val) {
export function dashboardTheme(val) {
if (val != null) {
return this.set('dashboardTheme', val);
}
return this.get('dashboardTheme');
};
}
UserSettings.prototype.skin = function (val) {
export function skin(val) {
if (val != null) {
return this.set('skin', val, false);
}
return this.get('skin', false);
};
}
UserSettings.prototype.theme = function (val) {
export function theme(val) {
if (val != null) {
return this.set('appTheme', val, false);
}
return this.get('appTheme', false);
};
}
UserSettings.prototype.screensaver = function (val) {
export function screensaver(val) {
if (val != null) {
return this.set('screensaver', val, false);
}
return this.get('screensaver', false);
};
}
UserSettings.prototype.soundEffects = function (val) {
export function libraryPageSize(val) {
if (val != null) {
return this.set('libraryPageSize', parseInt(val, 10), false);
}
var libraryPageSize = parseInt(this.get('libraryPageSize', false), 10);
if (libraryPageSize === 0) {
// Explicitly return 0 to avoid returning 100 because 0 is falsy.
return 0;
} else {
return libraryPageSize || 100;
}
}
export function soundEffects(val) {
if (val != null) {
return this.set('soundeffects', val, false);
}
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);
@ -218,9 +231,9 @@ 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;
@ -231,25 +244,24 @@ 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;
});
/* eslint-enable indent */

View file

@ -323,11 +323,11 @@ var AppInfo = {};
}
function getElementsPath() {
return "elements"
return "elements";
}
function getScriptsPath() {
return "scripts"
return "scripts";
}
function getPlaybackManager(playbackManager) {
@ -350,11 +350,6 @@ var AppInfo = {};
return layoutManager;
}
function createWindowHeadroom(Headroom) {
var headroom = new Headroom([], {});
return headroom;
}
function createSharedAppFooter(appFooter) {
return new appFooter({});
}
@ -452,6 +447,9 @@ var AppInfo = {};
require(["autoFocuser"], function(autoFocuser) {
autoFocuser.enable();
});
require(['globalize', 'connectionManager', 'events'], function (globalize, connectionManager, events) {
events.on(connectionManager, 'localusersignedin', globalize.updateCurrentCulture);
});
});
});
}
@ -574,6 +572,7 @@ var AppInfo = {};
}
require(["mediaSession", "serverNotifications"]);
require(["date-fns", "date-fns/locale"]);
if (!browser.tv && !browser.xboxOne) {
require(["components/playback/playbackorientation"]);
@ -584,7 +583,7 @@ var AppInfo = {};
}
}
require(["playerSelectionMenu", "fullscreenManager"]);
require(["playerSelectionMenu"]);
var apiClient = window.ConnectionManager && window.ConnectionManager.currentApiClient();
if (apiClient) {
@ -611,13 +610,17 @@ var AppInfo = {};
}
function registerServiceWorker() {
if (navigator.serviceWorker && "cordova" !== self.appMode && "android" !== self.appMode) {
/* eslint-disable compat/compat */
if (navigator.serviceWorker && self.appMode !== "cordova" && self.appMode !== "android") {
try {
navigator.serviceWorker.register("serviceworker.js");
} catch (err) {
console.error("error registering serviceWorker: " + err);
}
} else {
console.warn("serviceWorker unsupported");
}
/* eslint-enable compat/compat */
}
function onWebComponentsReady(browser) {
@ -647,12 +650,12 @@ var AppInfo = {};
inputManager: "scripts/inputManager",
datetime: "scripts/datetime",
globalize: "scripts/globalize",
dfnshelper: "scripts/dfnshelper",
libraryMenu: "scripts/librarymenu",
playlisteditor: componentsPath + "/playlisteditor/playlisteditor",
medialibrarycreator: componentsPath + "/medialibrarycreator/medialibrarycreator",
medialibraryeditor: componentsPath + "/medialibraryeditor/medialibraryeditor",
imageoptionseditor: componentsPath + "/imageoptionseditor/imageoptionseditor",
humanedate: componentsPath + "/humanedate",
apphost: componentsPath + "/apphost",
visibleinviewport: componentsPath + "/visibleinviewport",
qualityoptions: componentsPath + "/qualityoptions",
@ -693,8 +696,14 @@ var AppInfo = {};
"webcomponents",
"material-icons",
"jellyfin-noto",
"date-fns",
"page",
"polyfill"
"polyfill",
"fast-text-encoding",
"intersection-observer",
"classlist-polyfill",
"screenfull",
"headroom"
]
},
urlArgs: urlArgs,
@ -703,6 +712,9 @@ var AppInfo = {};
});
require(["polyfill"]);
require(["fast-text-encoding"]);
require(["intersection-observer"]);
require(["classlist-polyfill"]);
// Expose jQuery globally
require(["jQuery"], function(jQuery) {
@ -750,7 +762,6 @@ var AppInfo = {};
// TODO remove these libraries
// all of these have been modified so we need to fix that first
define("headroom", [componentsPath + "/headroom/headroom"], returnFirstDependency);
define("scroller", [componentsPath + "/scroller"], returnFirstDependency);
define("navdrawer", [componentsPath + "/navdrawer/navdrawer"], returnFirstDependency);
@ -765,13 +776,19 @@ var AppInfo = {};
define("emby-slider", [elementsPath + "/emby-slider/emby-slider"], returnFirstDependency);
define("emby-textarea", [elementsPath + "/emby-textarea/emby-textarea"], returnFirstDependency);
define("emby-toggle", [elementsPath + "/emby-toggle/emby-toggle"], returnFirstDependency);
define("emby-scroller", [elementsPath + "/emby-scroller/emby-scroller"], returnFirstDependency);
define("emby-tabs", [elementsPath + "/emby-tabs/emby-tabs"], returnFirstDependency);
define("emby-scrollbuttons", [elementsPath + "/emby-scrollbuttons/emby-scrollbuttons"], returnFirstDependency);
define("emby-itemrefreshindicator", [elementsPath + "/emby-itemrefreshindicator/emby-itemrefreshindicator"], returnFirstDependency);
define("emby-itemscontainer", [elementsPath + "/emby-itemscontainer/emby-itemscontainer"], returnFirstDependency);
define("emby-playstatebutton", [elementsPath + "/emby-playstatebutton/emby-playstatebutton"], returnFirstDependency);
define("emby-ratingbutton", [elementsPath + "/emby-ratingbutton/emby-ratingbutton"], returnFirstDependency);
define("emby-progressbar", [elementsPath + "/emby-progressbar/emby-progressbar"], returnFirstDependency);
define("emby-programcell", [elementsPath + "/emby-programcell/emby-programcell"], returnFirstDependency);
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);
@ -786,12 +803,7 @@ var AppInfo = {};
define("playerSettingsMenu", [componentsPath + "/playback/playersettingsmenu"], returnFirstDependency);
define("playMethodHelper", [componentsPath + "/playback/playmethodhelper"], returnFirstDependency);
define("brightnessOsd", [componentsPath + "/playback/brightnessosd"], returnFirstDependency);
define("emby-itemscontainer", [componentsPath + "/emby-itemscontainer/emby-itemscontainer"], returnFirstDependency);
define("alphaNumericShortcuts", [componentsPath + "/alphanumericshortcuts/alphanumericshortcuts"], returnFirstDependency);
define("emby-scroller", [componentsPath + "/emby-scroller/emby-scroller"], returnFirstDependency);
define("emby-tabs", [componentsPath + "/emby-tabs/emby-tabs"], returnFirstDependency);
define("emby-scrollbuttons", [componentsPath + "/emby-scrollbuttons/emby-scrollbuttons"], returnFirstDependency);
define("emby-itemrefreshindicator", [componentsPath + "/emby-itemrefreshindicator/emby-itemrefreshindicator"], returnFirstDependency);
define("multiSelect", [componentsPath + "/multiselect/multiselect"], returnFirstDependency);
define("alphaPicker", [componentsPath + "/alphapicker/alphapicker"], returnFirstDependency);
define("tabbedView", [componentsPath + "/tabbedview/tabbedview"], returnFirstDependency);
@ -818,8 +830,6 @@ var AppInfo = {};
define("searchFields", [componentsPath + "/search/searchfields"], returnFirstDependency);
define("searchResults", [componentsPath + "/search/searchresults"], returnFirstDependency);
define("upNextDialog", [componentsPath + "/upnextdialog/upnextdialog"], returnFirstDependency);
define("fullscreen-doubleclick", [componentsPath + "/fullscreen/fullscreen-dc"], returnFirstDependency);
define("fullscreenManager", [componentsPath + "/fullscreenManager", "events"], returnFirstDependency);
define("subtitleAppearanceHelper", [componentsPath + "/subtitlesettings/subtitleappearancehelper"], returnFirstDependency);
define("subtitleSettings", [componentsPath + "/subtitlesettings/subtitlesettings"], returnFirstDependency);
define("displaySettings", [componentsPath + "/displaysettings/displaysettings"], returnFirstDependency);
@ -848,8 +858,6 @@ var AppInfo = {};
define("objectassign", [componentsPath + "/polyfills/objectassign"], returnFirstDependency);
define("focusPreventScroll", [componentsPath + "/polyfills/focusPreventScroll"], returnFirstDependency);
define("userdataButtons", [componentsPath + "/userdatabuttons/userdatabuttons"], returnFirstDependency);
define("emby-playstatebutton", [componentsPath + "/userdatabuttons/emby-playstatebutton"], returnFirstDependency);
define("emby-ratingbutton", [componentsPath + "/userdatabuttons/emby-ratingbutton"], returnFirstDependency);
define("listView", [componentsPath + "/listview/listview"], returnFirstDependency);
define("indicators", [componentsPath + "/indicators/indicators"], returnFirstDependency);
define("viewSettings", [componentsPath + "/viewsettings/viewsettings"], returnFirstDependency);

View file

@ -1,27 +0,0 @@
define(["dom", "globalize", "emby-button"], function (dom, globalize) {
"use strict";
function onSubmit(e) {
if (dom.parentWithClass(this, "page").querySelector(".chkAccept").checked) {
Dashboard.navigate("wizardfinish.html");
} else {
Dashboard.alert({
message: globalize.translate("MessagePleaseAcceptTermsOfServiceBeforeContinuing"),
title: ""
});
}
e.preventDefault();
return false;
}
return function (view, params) {
view.querySelector(".wizardAgreementForm").addEventListener("submit", onSubmit);
view.addEventListener("viewshow", function () {
document.querySelector(".skinHeader").classList.add("noHomeButtonHeader");
});
view.addEventListener("viewhide", function () {
document.querySelector(".skinHeader").classList.remove("noHomeButtonHeader");
});
};
});