diff --git a/gulpfile.js b/gulpfile.js index 0eb5593541..973c400263 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -62,7 +62,7 @@ function serve() { port: 8080 }); - let events = ['add', 'change']; + const events = ['add', 'change']; watch(options.javascript.query).on('all', function (event, path) { if (events.includes(event)) { @@ -105,7 +105,7 @@ function clean() { return del(['dist/']); } -let pipelineJavascript = lazypipe() +const pipelineJavascript = lazypipe() .pipe(function () { return mode.development(sourcemaps.init({ loadMaps: true })); }) @@ -140,7 +140,7 @@ function apploader(standalone) { .pipe(pipelineJavascript()) .pipe(dest('dist/')) .pipe(browserSync.stream()); - }; + } task.displayName = 'apploader'; diff --git a/package.json b/package.json index 4eb8096b69..8f42635adc 100644 --- a/package.json +++ b/package.json @@ -92,13 +92,14 @@ "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/settings/webSettings.js", + "src/scripts/dfnshelper.js", "src/scripts/imagehelper.js", - "src/scripts/dfnshelper.js" + "src/scripts/inputManager.js" ], "plugins": [ "@babel/plugin-transform-modules-amd" diff --git a/src/bundle.js b/src/bundle.js index a5c0adc6de..cf4822deb6 100644 --- a/src/bundle.js +++ b/src/bundle.js @@ -85,15 +85,15 @@ _define("webcomponents", function() { }); // libass-wasm -var libass_wasm = require("libass-wasm"); +var libassWasm = require("libass-wasm"); _define("JavascriptSubtitlesOctopus", function() { - return libass_wasm; + return libassWasm; }); // material-icons -var material_icons = require("material-design-icons-iconfont/dist/material-design-icons.css"); +var materialIcons = require("material-design-icons-iconfont/dist/material-design-icons.css"); _define("material-icons", function() { - return material_icons; + return materialIcons; }); // noto font @@ -120,14 +120,14 @@ _define("classlist-polyfill", function () { }); // Date-FNS -var date_fns = require("date-fns"); +var dateFns = require("date-fns"); _define("date-fns", function () { - return date_fns; + return dateFns; }); -var date_fns_locale = require("date-fns/locale"); +var dateFnsLocale = require("date-fns/locale"); _define("date-fns/locale", function () { - return date_fns_locale; + return dateFnsLocale; }); var fast_text_encoding = require("fast-text-encoding"); diff --git a/src/components/appRouter.js b/src/components/appRouter.js index d348ce3247..a602d6dce8 100644 --- a/src/components/appRouter.js +++ b/src/components/appRouter.js @@ -579,7 +579,8 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM function showDirect(path) { return new Promise(function(resolve, reject) { - resolveOnNextShow = resolve, page.show(baseUrl()+path); + resolveOnNextShow = resolve; + page.show(baseUrl() + path); }); } diff --git a/src/components/homesections/homesections.js b/src/components/homesections/homesections.js index 94e36f9d28..cb4866a1cc 100644 --- a/src/components/homesections/homesections.js +++ b/src/components/homesections/homesections.js @@ -131,7 +131,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la } else if (section === 'librarytiles' || section === 'smalllibrarytiles' || section === 'smalllibrarytiles-automobile' || section === 'librarytiles-automobile') { loadLibraryTiles(elem, apiClient, user, userSettings, 'smallBackdrop', userViews, allSections); } else if (section === 'librarybuttons') { - loadlibraryButtons(elem, apiClient, user, userSettings, userViews, allSections); + loadlibraryButtons(elem, apiClient, user, userSettings, userViews); } else if (section === 'resume') { loadResumeVideo(elem, apiClient, userId); } else if (section === 'resumeaudio') { diff --git a/src/components/htmlaudioplayer/plugin.js b/src/components/htmlaudioplayer/plugin.js index 8cae76bbee..90f954d503 100644 --- a/src/components/htmlaudioplayer/plugin.js +++ b/src/components/htmlaudioplayer/plugin.js @@ -101,7 +101,7 @@ define(['events', 'browser', 'require', 'apphost', 'appSettings', 'htmlMediaHelp self._timeUpdated = false; self._currentTime = null; - var elem = createMediaElement(options); + var elem = createMediaElement(); return setCurrentSrc(elem, options); }; diff --git a/src/components/nowplayingbar/nowplayingbar.js b/src/components/nowplayingbar/nowplayingbar.js index 8da9b9c053..8205211b4f 100644 --- a/src/components/nowplayingbar/nowplayingbar.js +++ b/src/components/nowplayingbar/nowplayingbar.js @@ -241,7 +241,7 @@ define(['require', 'datetime', 'itemHelper', 'events', 'browser', 'imageLoader', elem.addEventListener('click', function (e) { if (!dom.parentWithTag(e.target, ['BUTTON', 'INPUT', 'A'])) { - showRemoteControl(0); + showRemoteControl(); } }); } diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index e9f7447691..2ea4c67cfb 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -3140,7 +3140,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla AllowVideoStreamCopy: false, AllowAudioStreamCopy: currentlyPreventsAudioStreamCopy || currentlyPreventsVideoStreamCopy ? false : null - }, true); + }); return; } diff --git a/src/components/slideshow/slideshow.js b/src/components/slideshow/slideshow.js index 26dc303def..d2bf1bb727 100644 --- a/src/components/slideshow/slideshow.js +++ b/src/components/slideshow/slideshow.js @@ -307,8 +307,7 @@ define(['dialogHelper', 'inputManager', 'connectionManager', 'layoutManager', 'f */ function getSwiperSlideHtmlFromItem(item) { return getSwiperSlideHtmlFromSlide({ - imageUrl: getImgUrl(item), - originalImage: getImgUrl(item, true), + originalImage: getImgUrl(item), //title: item.Name, //description: item.Overview Id: item.Id, diff --git a/src/controllers/auth/selectserver.js b/src/controllers/auth/selectserver.js index e766dbdb5c..2d27742119 100644 --- a/src/controllers/auth/selectserver.js +++ b/src/controllers/auth/selectserver.js @@ -95,7 +95,7 @@ define(["loading", "appRouter", "layoutManager", "appSettings", "apphost", "focu } function showServerConnectionFailure() { - alertText(globalize.translate("MessageUnableToConnectToServer"), globalize.translate("HeaderConnectionFailure")); + alertText(globalize.translate("MessageUnableToConnectToServer")); } return function (view, params) { diff --git a/src/controllers/movies/moviegenres.js b/src/controllers/movies/moviegenres.js index d51a2e4789..bb395f337c 100644 --- a/src/controllers/movies/moviegenres.js +++ b/src/controllers/movies/moviegenres.js @@ -184,12 +184,12 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader }; self.getCurrentViewStyle = function () { - return getPageData(tabContent).view; + return getPageData().view; }; self.setCurrentViewStyle = function (viewStyle) { - getPageData(tabContent).view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); + getPageData().view = viewStyle; + libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); fullyReload(); }; diff --git a/src/controllers/music/musicgenres.js b/src/controllers/music/musicgenres.js index b465a4d350..c1338bc222 100644 --- a/src/controllers/music/musicgenres.js +++ b/src/controllers/music/musicgenres.js @@ -107,12 +107,12 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f }; self.getCurrentViewStyle = function () { - return getPageData(tabContent).view; + return getPageData().view; }; self.setCurrentViewStyle = function (viewStyle) { - getPageData(tabContent).view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); + getPageData().view = viewStyle; + libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); fullyReload(); }; diff --git a/src/controllers/music/musicplaylists.js b/src/controllers/music/musicplaylists.js index fd458c88ac..795eaba795 100644 --- a/src/controllers/music/musicplaylists.js +++ b/src/controllers/music/musicplaylists.js @@ -69,7 +69,7 @@ define(["libraryBrowser", "cardBuilder", "apphost", "imageLoader", "loading"], f var data = {}; self.getCurrentViewStyle = function () { - return getPageData(tabContent).view; + return getPageData().view; }; var promise; diff --git a/src/controllers/shows/tvgenres.js b/src/controllers/shows/tvgenres.js index 9c37e04e7c..9a0823a6b9 100644 --- a/src/controllers/shows/tvgenres.js +++ b/src/controllers/shows/tvgenres.js @@ -177,12 +177,12 @@ define(["layoutManager", "loading", "libraryBrowser", "cardBuilder", "lazyLoader }; self.getCurrentViewStyle = function () { - return getPageData(tabContent).view; + return getPageData().view; }; self.setCurrentViewStyle = function (viewStyle) { - getPageData(tabContent).view = viewStyle; - libraryBrowser.saveViewSetting(getSavedQueryKey(tabContent), viewStyle); + getPageData().view = viewStyle; + libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); fullyReload(); }; diff --git a/src/legacy/dashboard.js b/src/legacy/dashboard.js index 69c47d3b1f..63c5eb0faa 100644 --- a/src/legacy/dashboard.js +++ b/src/legacy/dashboard.js @@ -3,16 +3,20 @@ Dashboard.confirm = function(message, title, callback) { require(["confirm"], function(confirm) { confirm(message, title).then(function() { callback(!0); - }, function() { + }).catch(function() { callback(!1); }); }); -}, Dashboard.showLoadingMsg = function() { +}; + +Dashboard.showLoadingMsg = function() { "use strict"; require(["loading"], function(loading) { loading.show(); }); -}, Dashboard.hideLoadingMsg = function() { +}; + +Dashboard.hideLoadingMsg = function() { "use strict"; require(["loading"], function(loading) { loading.hide(); diff --git a/src/legacy/fnchecked.js b/src/legacy/fnchecked.js index 1f5a5f6014..b815668f93 100644 --- a/src/legacy/fnchecked.js +++ b/src/legacy/fnchecked.js @@ -4,7 +4,9 @@ define(["jQuery"], function($) { return !0 === value || !1 === value ? $(this).each(function() { this.checked = value; }) : this.length && this[0].checked; - }, $.fn.checkboxradio = function() { + }; + + $.fn.checkboxradio = function() { return this; }; }); diff --git a/src/scripts/apploader.js b/src/scripts/apploader.js index e8a63217a8..7001c4c614 100644 --- a/src/scripts/apploader.js +++ b/src/scripts/apploader.js @@ -8,7 +8,7 @@ var script = document.createElement("script"); if (self.dashboardVersion) { - src += "?v=" + self.dashboardVersion; + src += `?v=${self.dashboardVersion}`; } script.src = src; diff --git a/src/scripts/autobackdrops.js b/src/scripts/autobackdrops.js index 09f89fad6f..fcc49d968b 100644 --- a/src/scripts/autobackdrops.js +++ b/src/scripts/autobackdrops.js @@ -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; diff --git a/src/scripts/dfnshelper.js b/src/scripts/dfnshelper.js index 379190842b..3f82e6ba7c 100644 --- a/src/scripts/dfnshelper.js +++ b/src/scripts/dfnshelper.js @@ -1,99 +1,57 @@ -import { ar, be, bg, ca, cs, da, de, el, enGB, enUS, es, faIR, fi, fr, frCA, he, hi, hr, hu, id, it, kk, ko, lt, ms, nb, nl, pl, ptBR, pt, ro, ru, sk, sl, sv, tr, uk, vi, zhCN, zhTW } from 'date-fns/locale'; +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() { - switch (globalize.getCurrentLocale()) { - case 'ar': - return ar; - case 'be-by': - return be; - case 'bg-bg': - return bg; - case 'ca': - return ca; - case 'cs': - return cs; - case 'da': - return da; - case 'de': - return de; - case 'el': - return el; - case 'en-gb': - return enGB; - case 'en-us': - return enUS; - case 'es': - return es; - case 'es-ar': - return es; - case 'es-mx': - return es; - case 'fa': - return faIR; - case 'fi': - return fi; - case 'fr': - return fr; - case 'fr-ca': - return frCA; - case 'gsw': - return de; - case 'he': - return he; - case 'hi-in': - return hi; - case 'hr': - return hr; - case 'hu': - return hu; - case 'id': - return id; - case 'it': - return it; - case 'kk': - return kk; - case 'ko': - return ko; - case 'lt-lt': - return lt; - case 'ms': - return ms; - case 'nb': - return nb; - case 'nl': - return nl; - case 'pl': - return pl; - case 'pt-br': - return ptBR; - case 'pt-pt': - return pt; - case 'ro': - return ro; - case 'ru': - return ru; - case 'sk': - return sk; - case 'sl-si': - return sl; - case 'sv': - return sv; - case 'tr': - return tr; - case 'uk': - return uk; - case 'vi': - return vi; - case 'zh-cn': - return zhCN; - case 'zh-hk': - return zhCN; - case 'zh-tw': - return zhTW; - default: - return enUS; - } + return dateLocales(globalize.getCurrentLocale()) || enUS; } export const localeWithSuffix = { addSuffix: true, locale: getLocale() }; diff --git a/src/scripts/inputManager.js b/src/scripts/inputManager.js index 4d62ff9f20..cacc6c99a3 100644 --- a/src/scripts/inputManager.js +++ b/src/scripts/inputManager.js @@ -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,169 +74,164 @@ 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}`); } } @@ -239,13 +239,14 @@ define(['playbackManager', 'focusManager', 'appRouter', 'dom', 'apphost'], funct 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 +}; diff --git a/src/scripts/playlistedit.js b/src/scripts/playlistedit.js index 32a3a960a4..bca9f02734 100644 --- a/src/scripts/playlistedit.js +++ b/src/scripts/playlistedit.js @@ -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)); }; }