From f7997d5270f1a3e450d19db981679d837e6d37a3 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Tue, 25 Feb 2020 18:33:38 -0500 Subject: [PATCH 01/19] Add eslint:recommended and update rules and globals --- .eslintrc.yml | 56 ++++++++++++++++--- src/components/htmlvideoplayer/plugin.js | 1 + .../polyfills/focusPreventScroll.js | 1 + src/components/polyfills/objectassign.js | 1 + src/components/serviceworker/notifications.js | 1 + src/components/skinManager.js | 1 + src/components/youtubeplayer/plugin.js | 1 + src/serviceworker.js | 1 + 8 files changed, 56 insertions(+), 7 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index 1055e084c9..c7ec5c228a 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -3,6 +3,52 @@ env: browser: true amd: true +globals: + # New browser globals + DataView: readonly + MediaMetadata: readonly + Promise: readonly + # Deprecated browser globals + DocumentTouch: readonly + # Tizen globals + tizen: readonly + webapis: readonly + # WebOS globals + webOS: readonly + # Dependency globals + $: readonly + jQuery: readonly + queryString: readonly + requirejs: readonly + # Jellyfin globals + ApiClient: writable + AppInfo: writable + chrome: writable + ConnectionManager: writable + DlnaProfilePage: writable + Dashboard: writable + DashboardPage: writable + Emby: readonly + Events: writable + getParameterByName: writable + getWindowLocationSearch: writable + Globalize: writable + Hls: writable + humaneDate: writable + humaneElapsed: writable + LibraryMenu: writable + LinkParser: writable + LiveTvHelpers: writable + MetadataEditor: writable + pageClassOn: writable + pageIdOn: writable + PlaylistViewer: writable + UserParentalControlPage: writable + Windows: readonly + +extends: + - eslint:recommended + rules: block-spacing: ["error"] brace-style: ["error"] @@ -11,17 +57,13 @@ rules: eol-last: ["error"] indent: ["error", 4, { "SwitchCase": 1 }] keyword-spacing: ["error"] - line-comment-position: ["off"] max-statements-per-line: ["error"] - no-empty: ["error"] - no-extra-semi: ["error"] no-floating-decimal: ["error"] no-multi-spaces: ["error"] no-multiple-empty-lines: ["error", { "max": 1 }] + no-redeclare: ["warn"] no-trailing-spaces: ["error"] - no-void: ["off"] + no-unused-vars: ["warn"] + no-useless-escape: ["warn"] one-var: ["error", "never"] - padding-line-between-statements: ["off"] - semi: ["off"] space-before-blocks: ["error"] - yoda: ["off"] diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index 6760e1dd99..c72afb382f 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -357,6 +357,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa return new Promise(function (resolve, reject) { require(['shaka'], function () { + /* globals shaka */ var player = new shaka.Player(elem); diff --git a/src/components/polyfills/focusPreventScroll.js b/src/components/polyfills/focusPreventScroll.js index 8c8da94244..6df9e9928c 100644 --- a/src/components/polyfills/focusPreventScroll.js +++ b/src/components/polyfills/focusPreventScroll.js @@ -12,6 +12,7 @@ if (HTMLElement.prototype.nativeFocus === undefined) { }, true); var opts = Object.defineProperty({}, "preventScroll", { + // eslint-disable-next-line getter-return get: function () { supportsPreventScrollOption = true; } diff --git a/src/components/polyfills/objectassign.js b/src/components/polyfills/objectassign.js index bf8d7118a5..85f55aa144 100644 --- a/src/components/polyfills/objectassign.js +++ b/src/components/polyfills/objectassign.js @@ -11,6 +11,7 @@ if (typeof Object.assign != 'function') { var source = arguments[index]; if (source !== undefined && source !== null) { for (var nextKey in source) { + // eslint-disable-next-line no-prototype-builtins if (source.hasOwnProperty(nextKey)) { output[nextKey] = source[nextKey]; } diff --git a/src/components/serviceworker/notifications.js b/src/components/serviceworker/notifications.js index dbb0844045..33f54bb64d 100644 --- a/src/components/serviceworker/notifications.js +++ b/src/components/serviceworker/notifications.js @@ -1,3 +1,4 @@ +/* eslint-env serviceworker */ (function () { 'use strict'; diff --git a/src/components/skinManager.js b/src/components/skinManager.js index b38ff25791..b81e7c3a40 100644 --- a/src/components/skinManager.js +++ b/src/components/skinManager.js @@ -162,6 +162,7 @@ define(['apphost', 'userSettings', 'browser', 'events', 'pluginManager', 'backdr function playSound(path, volume) { lastSound = new Date().getTime(); require(['howler'], function (howler) { + /* globals Howl */ try { var sound = new Howl({ src: [path], diff --git a/src/components/youtubeplayer/plugin.js b/src/components/youtubeplayer/plugin.js index df04fb850e..fd9c05292e 100644 --- a/src/components/youtubeplayer/plugin.js +++ b/src/components/youtubeplayer/plugin.js @@ -1,5 +1,6 @@ define(['require', 'events', 'browser', 'appRouter', 'loading'], function (require, events, browser, appRouter, loading) { "use strict"; + /* globals YT */ function zoomIn(elem, iterations) { var keyframes = [ diff --git a/src/serviceworker.js b/src/serviceworker.js index 49c3767691..c43d1f4b4e 100644 --- a/src/serviceworker.js +++ b/src/serviceworker.js @@ -1 +1,2 @@ +/* eslint-env serviceworker */ importScripts("components/serviceworker/notifications.js"); From fb2fe462df209086d3e6c33cc14d1ff236fc0e78 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 00:19:04 -0500 Subject: [PATCH 02/19] Fix redundant double negation errors --- src/components/alphanumericshortcuts/alphanumericshortcuts.js | 2 +- src/components/apphost.js | 2 +- src/scripts/browserdeviceprofile.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/alphanumericshortcuts/alphanumericshortcuts.js b/src/components/alphanumericshortcuts/alphanumericshortcuts.js index 0c62add1e1..2bcf3712bb 100644 --- a/src/components/alphanumericshortcuts/alphanumericshortcuts.js +++ b/src/components/alphanumericshortcuts/alphanumericshortcuts.js @@ -10,7 +10,7 @@ define(['dom', 'focusManager'], function (dom, focusManager) { if (e.ctrlKey) { return; } - if (!!e.shiftKey) { + if (e.shiftKey) { return; } if (e.altKey) { diff --git a/src/components/apphost.js b/src/components/apphost.js index 291f531eb1..83426a3267 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -324,7 +324,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet * Ask user for exit */ function askForExit() { - if (!!exitPromise) { + if (exitPromise) { return; } diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 7eb2c3caff..b45bdc59bf 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -92,7 +92,7 @@ define(['browser'], function (browser) { return true; } - if (!!videoTestElement.canPlayType) { + if (videoTestElement.canPlayType) { return videoTestElement.canPlayType('application/x-mpegurl; codecs="avc1.42E01E, ac-3"').replace(/no/, '') || videoTestElement.canPlayType('application/vnd.apple.mpegURL; codecs="avc1.42E01E, ac-3"').replace(/no/, ''); } From 335dc4eff41b8c4e7768e38fd049501cae9fd3ac Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 00:42:58 -0500 Subject: [PATCH 03/19] Remove dead code --- src/scripts/userpassword.js | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 src/scripts/userpassword.js diff --git a/src/scripts/userpassword.js b/src/scripts/userpassword.js deleted file mode 100644 index 52e06e6cec..0000000000 --- a/src/scripts/userpassword.js +++ /dev/null @@ -1,30 +0,0 @@ -define(["jQuery", "loading", "libraryMenu"], function ($, loading, libraryMenu) { - "use strict"; - - function loadUser(page, user) { - libraryMenu.setTitle(user.Name); - - if ("Guest" == user.ConnectLinkType) { - $(".connectMessage", page).show(); - } else { - $(".connectMessage", page).hide(); - } - - loading.hide(); - } - - function loadData(page) { - loading.show(); - var userId = getParameterByName("userId"); - ApiClient.getUser(userId).then(function (user) { - loadUser(page, user); - }); - } - - $(document).on("pageinit", "#userPasswordPage", function () { - $(".adminUpdatePasswordForm").off("submit", UpdatePasswordPage.onSubmit).on("submit", UpdatePasswordPage.onSubmit); - $(".adminLocalAccessForm").off("submit", UpdatePasswordPage.onLocalAccessSubmit).on("submit", UpdatePasswordPage.onLocalAccessSubmit); - }).on("pagebeforeshow", "#userPasswordPage", function () { - loadData(this); - }); -}); From 45acf525484a1205b114f8492d0c235d9f028792 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 00:46:56 -0500 Subject: [PATCH 04/19] Fix errors in itemdetailpage --- src/controllers/itemdetailpage.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 990de87b60..83bd47d17a 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -647,7 +647,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild function setTitle(item, apiClient) { var url = logoImageUrl(item, apiClient, {}); - if (url = null) { + if (url == null) { var pageTitle = document.querySelector(".pageTitle"); pageTitle.style.backgroundImage = "url('" + url + "')"; pageTitle.classList.add("pageTitleWithLogo"); @@ -1661,7 +1661,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild function canPlaySomeItemInCollection(items) { var i = 0; - for (length = items.length; i < length; i++) { + for (var length = items.length; i < length; i++) { if (playbackManager.canPlay(items[i])) { return true; } From 36224ce5f71f28c62b833089fdb429ed744c65af Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 00:48:41 -0500 Subject: [PATCH 05/19] Fix undefined globalize error --- src/controllers/dashboard/general.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/dashboard/general.js b/src/controllers/dashboard/general.js index fe8661b578..a434e46241 100644 --- a/src/controllers/dashboard/general.js +++ b/src/controllers/dashboard/general.js @@ -58,7 +58,7 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb }); }, function () { require(["alert"], function (alert) { - alert(globalize.translate("DefaultErrorMessage")); + alert(Globalize.translate("DefaultErrorMessage")); }); Dashboard.processServerConfigurationUpdateResult(); From 75b7afd531bc96497db464737ae32c1f675b1e25 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:01:21 -0500 Subject: [PATCH 06/19] Fix references to removed renderHasPendingRestart function --- src/controllers/dashboard/dashboard.js | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/controllers/dashboard/dashboard.js b/src/controllers/dashboard/dashboard.js index 1b7d123931..2530d7a9a1 100644 --- a/src/controllers/dashboard/dashboard.js +++ b/src/controllers/dashboard/dashboard.js @@ -741,21 +741,15 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa }; return function (view, params) { function onRestartRequired(evt, apiClient) { - if (apiClient.serverId() === serverId) { - renderHasPendingRestart(view, apiClient, true); - } + console.debug('onRestartRequired not implemented', evt, apiClient); } function onServerShuttingDown(evt, apiClient) { - if (apiClient.serverId() === serverId) { - renderHasPendingRestart(view, apiClient, true); - } + console.debug('onServerShuttingDown not implemented', evt, apiClient); } function onServerRestarting(evt, apiClient) { - if (apiClient.serverId() === serverId) { - renderHasPendingRestart(view, apiClient, true); - } + console.debug('onServerRestarting not implemented', evt, apiClient); } function onPackageInstalling(evt, apiClient) { From f12e24b1cb130c47158a8599b3c16427097c0ddd Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:07:23 -0500 Subject: [PATCH 07/19] Fix undefined variables in tunerpicker --- src/components/tunerpicker.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/tunerpicker.js b/src/components/tunerpicker.js index ec6087b890..4dd5ecd3de 100644 --- a/src/components/tunerpicker.js +++ b/src/components/tunerpicker.js @@ -1,4 +1,4 @@ -define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize", "loading", "browser", "material-icons", "formDialogStyle", "emby-button", "emby-itemscontainer", "cardStyle"], function (dialogHelper, dom, layoutManager, connectionManager, globalize, loading, browser) { +define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize", "loading", "browser", "focusManager", "scrollHelper", "material-icons", "formDialogStyle", "emby-button", "emby-itemscontainer", "cardStyle"], function (dialogHelper, dom, layoutManager, connectionManager, globalize, loading, browser, focusManager, scrollHelper) { "use strict"; var enableFocusTransform = !browser.slow && !browser.edge; @@ -152,14 +152,14 @@ define(["dialogHelper", "dom", "layoutManager", "connectionManager", "globalize" }); if (layoutManager.tv) { - centerFocus(dlg.querySelector(".formDialogContent"), false, true); + scrollHelper.centerFocus.on(dlg.querySelector(".formDialogContent"), false); } var apiClient = connectionManager.getApiClient(options.serverId); discoverDevices(dlg, apiClient); if (layoutManager.tv) { - centerFocus(dlg.querySelector(".formDialogContent"), false, false); + scrollHelper.centerFocus.off(dlg.querySelector(".formDialogContent"), false); } return dialogHelper.open(dlg).then(function () { From 23c3536acedcbb14e76af17e711442e6792ef9b6 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:12:48 -0500 Subject: [PATCH 08/19] Suppress fallthrough error in subtitlesync --- src/components/subtitlesync/subtitlesync.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/subtitlesync/subtitlesync.js b/src/components/subtitlesync/subtitlesync.js index 904c612317..07ce2cb7ec 100644 --- a/src/components/subtitlesync/subtitlesync.js +++ b/src/components/subtitlesync/subtitlesync.js @@ -130,7 +130,7 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles SubtitleSync.prototype.toggle = function(action) { if (player && playbackManager.supportSubtitleOffset(player)) { - + /* eslint-disable no-fallthrough */ switch (action) { case undefined: // if showing subtitle sync is enabled @@ -157,7 +157,7 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles subtitleSyncContainer.classList.add("hide"); break; } - + /* eslint-enable no-fallthrough */ } } From 75ac5ed8b28bca9ddc3d9c1a3bd24d611330490b Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:23:28 -0500 Subject: [PATCH 09/19] Suppress getter-return errors in compatibility tests --- src/components/dom.js | 1 + src/components/scrollManager.js | 1 + 2 files changed, 2 insertions(+) diff --git a/src/components/dom.js b/src/components/dom.js index 5c96965d15..072ff5c77c 100644 --- a/src/components/dom.js +++ b/src/components/dom.js @@ -63,6 +63,7 @@ define([], function () { var supportsCaptureOption = false; try { var opts = Object.defineProperty({}, 'capture', { + // eslint-disable-next-line getter-return get: function () { supportsCaptureOption = true; } diff --git a/src/components/scrollManager.js b/src/components/scrollManager.js index 21af83055f..5fc3729bac 100644 --- a/src/components/scrollManager.js +++ b/src/components/scrollManager.js @@ -33,6 +33,7 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage var elem = document.createElement("div"); var opts = Object.defineProperty({}, "behavior", { + // eslint-disable-next-line getter-return get: function () { supportsScrollToOptions = true; } From b30469654f56f011bee515c13e0065b4f5c35f4f Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:39:10 -0500 Subject: [PATCH 10/19] Suppress no-control-regex in sanitizefilename --- src/components/sanitizefilename.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/sanitizefilename.js b/src/components/sanitizefilename.js index 9bcc99e3a1..f53ce613f6 100644 --- a/src/components/sanitizefilename.js +++ b/src/components/sanitizefilename.js @@ -4,6 +4,7 @@ define([], function () { 'use strict'; var illegalRe = /[\/\?<>\\:\*\|":]/g; + // eslint-disable-next-line no-control-regex var controlRe = /[\x00-\x1f\x80-\x9f]/g; var reservedRe = /^\.+$/; var windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i; From 29e7c4775bc931b083d21319a1ded36776f023e4 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:39:40 -0500 Subject: [PATCH 11/19] Fix undefined type in libraryoptionseditor --- src/components/libraryoptionseditor/libraryoptionseditor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/libraryoptionseditor/libraryoptionseditor.js b/src/components/libraryoptionseditor/libraryoptionseditor.js index f9f63c9b51..123fce9b95 100644 --- a/src/components/libraryoptionseditor/libraryoptionseditor.js +++ b/src/components/libraryoptionseditor/libraryoptionseditor.js @@ -463,7 +463,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct if (!typeOptions) { typeOptions = { - Type: type + Type: originalTypeOption.Type }; options.TypeOptions.push(typeOptions); } From 210e241c7746d06008e3e83abe92b51cc645c054 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:42:05 -0500 Subject: [PATCH 12/19] Suppress conditional assignment error in humanedate lib --- src/components/humanedate.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/humanedate.js b/src/components/humanedate.js index 85d3a6d3bf..26ce26d942 100644 --- a/src/components/humanedate.js +++ b/src/components/humanedate.js @@ -25,6 +25,7 @@ define(["datetime"], function (datetime) { if (seconds < 0) { seconds = Math.abs(seconds); } + // eslint-disable-next-line no-cond-assign for (; format = time_formats[i++];) { if (seconds < format[0]) { if (2 == format.length) { From 4c297573f11abdbbede9708b6a921a8ff89f252c Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 01:58:15 -0500 Subject: [PATCH 13/19] Fix errors in htmlvideoplayer plugin --- src/components/htmlvideoplayer/plugin.js | 43 +++++------------------- 1 file changed, 9 insertions(+), 34 deletions(-) diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index c72afb382f..2a59f3b13f 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -1,5 +1,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackManager', 'appRouter', 'appSettings', 'connectionManager', 'htmlMediaHelper', 'itemHelper', 'fullscreenManager', 'globalize'], function (browser, require, events, appHost, loading, dom, playbackManager, appRouter, appSettings, connectionManager, htmlMediaHelper, itemHelper, fullscreenManager, globalize) { "use strict"; + /* globals cast */ var mediaManager; @@ -741,7 +742,9 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } } + // No idea what this is possibly trying to workaround setTimeout(function () { + // eslint-disable-next-line no-self-assign elem.currentTime = elem.currentTime; }, 100); }; @@ -1350,38 +1353,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa } } - function updateTextStreamUrls(startPositionTicks) { - - if (!supportsTextTracks()) { - return; - } - - var allTracks = self._mediaElement.textTracks; // get list of tracks - var i; - var track; - - for (i = 0; i < allTracks.length; i++) { - - track = allTracks[i]; - - // This throws an error in IE, but is fine in chrome - // In IE it's not necessary anyway because changing the src seems to be enough - try { - while (track.cues.length) { - track.removeCue(track.cues[0]); - } - } catch (e) { - console.error('error removing cue from textTrack'); - } - } - - var tracks = self._mediaElement.querySelectorAll('track'); - for (i = 0; i < tracks.length; i++) { - track = tracks[i]; - track.src = replaceQueryString(track.src, 'startPositionTicks', startPositionTicks); - } - } - function createMediaElement(options) { if (browser.tv || browser.iOS || browser.mobile) { @@ -1653,9 +1624,13 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa if (document.AirPlayEnabled) { if (video) { if (isEnabled) { - video.requestAirPlay().catch(onAirPlayError); + video.requestAirPlay().catch(function(err) { + console.error("Error requesting AirPlay", err) + }); } else { - document.exitAirPLay().catch(onAirPlayError); + document.exitAirPLay().catch(function(err) { + console.error("Error exiting AirPlay", err) + }); } } } else { From 6acff39055fb38ad1bc35df6c9b732494d9ef91e Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 02:00:13 -0500 Subject: [PATCH 14/19] Remove dead code --- src/components/guide/guide-settings.js | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/components/guide/guide-settings.js b/src/components/guide/guide-settings.js index b31a3d1086..7409a7e943 100644 --- a/src/components/guide/guide-settings.js +++ b/src/components/guide/guide-settings.js @@ -89,20 +89,6 @@ define(['dialogHelper', 'globalize', 'userSettings', 'layoutManager', 'connectio } } - function onSortByChange() { - var newValue = this.value; - if (this.checked) { - var changed = options.query.SortBy !== newValue; - - options.query.SortBy = newValue.replace('_', ','); - options.query.StartIndex = 0; - - if (options.callback && changed) { - options.callback(); - } - } - } - function showEditor(options) { return new Promise(function (resolve, reject) { From ce2fdc9df281d86015e7e26f30423fe3b771a629 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 02:03:21 -0500 Subject: [PATCH 15/19] Fix errors in chromecasthelpers --- src/components/chromecast/chromecasthelpers.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/chromecast/chromecasthelpers.js b/src/components/chromecast/chromecasthelpers.js index d8bb29252d..2fef0c68b3 100644 --- a/src/components/chromecast/chromecasthelpers.js +++ b/src/components/chromecast/chromecasthelpers.js @@ -131,8 +131,9 @@ define(['events'], function (events) { var links = []; var match; + // eslint-disable-next-line no-cond-assign while (match = linkRegExp.exec(text)) { - console.debug(matches); + console.debug(match); var txt = match[0]; var pos = match.index; var len = txt.length; From 33bbd40174a186650c87b4f6390f3aebb0e054ed Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 02:26:18 -0500 Subject: [PATCH 16/19] Fix errors in cardBuilder --- src/components/cardbuilder/cardBuilder.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/components/cardbuilder/cardBuilder.js b/src/components/cardbuilder/cardBuilder.js index 75702f386e..bc82813d9a 100644 --- a/src/components/cardbuilder/cardBuilder.js +++ b/src/components/cardbuilder/cardBuilder.js @@ -140,7 +140,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } return 100 / 72; } - break; case 'overflowPortrait': if (layoutManager.tv) { @@ -166,7 +165,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } return 100 / 42; } - break; case 'overflowSquare': if (layoutManager.tv) { return 100 / 15.5; @@ -191,7 +189,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } return 100 / 42; } - break; case 'overflowBackdrop': if (layoutManager.tv) { return 100 / 23.3; @@ -216,7 +213,6 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } return 100 / 72; } - break; default: return 4; } @@ -870,9 +866,10 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana if (item.PremiereDate) { try { - - lines.push(getPremiereDateText(item)); - + lines.push(datetime.toLocaleDateString( + datetime.parseISO8601Date(item.PremiereDate), + { weekday: 'long', month: 'long', day: 'numeric' } + )); } catch (err) { lines.push(''); @@ -1383,7 +1380,7 @@ define(['datetime', 'imageLoader', 'connectionManager', 'itemHelper', 'focusMana } if (item.Type === 'CollectionFolder' || item.CollectionType) { - var refreshClass = item.RefreshProgress || (item.RefreshStatus && virtualFolder.item !== 'Idle') ? '' : ' class="hide"'; + var refreshClass = item.RefreshProgress ? '' : ' class="hide"'; indicatorsHtml += '
'; requireRefreshIndicator(); } From 15ef6bf94513912474807ab44702a0e3a4db765c Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 10:49:53 -0500 Subject: [PATCH 17/19] Add missing semicolon warning --- .eslintrc.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index c7ec5c228a..f5ce779d44 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -61,9 +61,11 @@ rules: no-floating-decimal: ["error"] no-multi-spaces: ["error"] no-multiple-empty-lines: ["error", { "max": 1 }] - no-redeclare: ["warn"] no-trailing-spaces: ["error"] + one-var: ["error", "never"] + semi: ["warn"] + space-before-blocks: ["error"] + # TODO: Fix warnings and remove these rules + no-redeclare: ["warn"] no-unused-vars: ["warn"] no-useless-escape: ["warn"] - one-var: ["error", "never"] - space-before-blocks: ["error"] From 6f0b735b3d742b8b4b5b4a9948f25b28c3450769 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 10:50:41 -0500 Subject: [PATCH 18/19] Fix inverted logic --- src/controllers/itemdetailpage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index 83bd47d17a..ad8c0286b0 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -647,7 +647,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild function setTitle(item, apiClient) { var url = logoImageUrl(item, apiClient, {}); - if (url == null) { + if (url != null) { var pageTitle = document.querySelector(".pageTitle"); pageTitle.style.backgroundImage = "url('" + url + "')"; pageTitle.classList.add("pageTitleWithLogo"); From 8cdeaa8190573b2a3fea7923a11cb19bb8f4f3e5 Mon Sep 17 00:00:00 2001 From: Bill Thornton Date: Wed, 26 Feb 2020 10:51:34 -0500 Subject: [PATCH 19/19] Remove questionable code --- src/components/htmlvideoplayer/plugin.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/components/htmlvideoplayer/plugin.js b/src/components/htmlvideoplayer/plugin.js index 2a59f3b13f..3ac45aabb9 100644 --- a/src/components/htmlvideoplayer/plugin.js +++ b/src/components/htmlvideoplayer/plugin.js @@ -741,12 +741,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa elemAudioTracks[i].enabled = false; } } - - // No idea what this is possibly trying to workaround - setTimeout(function () { - // eslint-disable-next-line no-self-assign - elem.currentTime = elem.currentTime; - }, 100); }; self.stop = function (destroyPlayer) {