From ce2c3ad36e760fe8c5e7b7c2143254a130181f6f Mon Sep 17 00:00:00 2001 From: Vasily Date: Fri, 24 Apr 2020 13:46:57 +0300 Subject: [PATCH 01/10] Debugging stuff --- gulpfile.js | 12 ++++++------ src/scripts/settings/webSettings.js | 3 +++ src/scripts/site.js | 4 ++++ webpack.dev.js | 2 +- webpack.prod.js | 2 +- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 4556e71bc8..865f033dbf 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -116,12 +116,12 @@ const pipelineJavascript = lazypipe() ] }); }) - .pipe(function () { - return terser({ - keep_fnames: true, - mangle: false - }); - }) +// .pipe(function () { +// return terser({ +// keep_fnames: true, +// mangle: false +// }); +// }) .pipe(function () { return mode.development(sourcemaps.write('.')); }); diff --git a/src/scripts/settings/webSettings.js b/src/scripts/settings/webSettings.js index 4b1b658e9b..8279c162fe 100644 --- a/src/scripts/settings/webSettings.js +++ b/src/scripts/settings/webSettings.js @@ -11,5 +11,8 @@ function getConfig() { export function enableMultiServer() { return getConfig().then(config => { return config.multiserver; + }).catch(error => { + console.log("cannot get web config:", error); + return false; }); } diff --git a/src/scripts/site.js b/src/scripts/site.js index df9bd44953..fb9043aa2d 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -709,6 +709,10 @@ var AppInfo = {}; onError: onRequireJsError }); + require(["fetch"], function (fetch) { + console.debug("fetch is here", fetch); + }); + require(["polyfill"]); require(["fast-text-encoding"]); require(["intersection-observer"]); diff --git a/webpack.dev.js b/webpack.dev.js index beca8ea4fb..687e3d6b70 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -14,7 +14,7 @@ module.exports = merge(common, { rules: [ { test: /\.js$/, - exclude: /node_modules[\\/](?!query-string)/, + exclude: /node_modules[\\/](?!query-string|split-on-first|strict-uri-encode)/, loader: "babel-loader" }, { diff --git a/webpack.prod.js b/webpack.prod.js index 80d40f3450..59d988fa95 100644 --- a/webpack.prod.js +++ b/webpack.prod.js @@ -7,7 +7,7 @@ module.exports = merge(common, { rules: [ { test: /\.js$/, - exclude: /node_modules[\\/](?!query-string)/, + exclude: /node_modules[\\/](?!query-string|split-on-first|strict-uri-encode)/, loader: "babel-loader" }, { From 1f8d1184d8387695ee7e164286e7673b644c05f7 Mon Sep 17 00:00:00 2001 From: Vasily Date: Fri, 24 Apr 2020 14:56:22 +0300 Subject: [PATCH 02/10] Do not call Notification.requestPermission() if it is already granted or denied This function crashes the app on WebOS 1.2, and notifs do not work on WebOS anyway --- src/components/notifications/notifications.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/notifications/notifications.js b/src/components/notifications/notifications.js index 8ba870613b..4b00171aee 100644 --- a/src/components/notifications/notifications.js +++ b/src/components/notifications/notifications.js @@ -5,7 +5,8 @@ define(['serverNotifications', 'playbackManager', 'events', 'globalize', 'requir document.removeEventListener('click', onOneDocumentClick); document.removeEventListener('keydown', onOneDocumentClick); - if (window.Notification) { + // don't request notification permissions if they're already granted or denied + if (window.Notification && window.Notification.permission === "default") { /* eslint-disable-next-line compat/compat */ Notification.requestPermission(); } From 85002fa5c29ca76d669f0dd9778d03bc531b3e81 Mon Sep 17 00:00:00 2001 From: Vasily Date: Fri, 24 Apr 2020 21:54:33 +0300 Subject: [PATCH 03/10] Create tabs custom element properly --- src/components/maintabsmanager.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/components/maintabsmanager.js b/src/components/maintabsmanager.js index 2571470015..bbb38a2706 100644 --- a/src/components/maintabsmanager.js +++ b/src/components/maintabsmanager.js @@ -139,8 +139,18 @@ define(['dom', 'browser', 'events', 'emby-tabs', 'emby-button'], function (dom, var index = 0; - var indexAttribute = selectedIndex == null ? '' : (' data-index="' + selectedIndex + '"'); - var tabsHtml = '
' + getTabsFn().map(function (t) { + var tabsElement; + try { + tabsElement = document.createElement('div', {is: 'emby-tabs'}); + } catch (err) { + // older browser not supporting options for createElement + tabsElement = document.createElement('div', 'emby-tabs'); + } + if (selectedIndex != null) { + tabsElement.setAttribute('data-index', selectedIndex); + } + tabsElement.className = 'tabs-viewmenubar'; + tabsElement.innerHTML = '
' + getTabsFn().map(function (t) { var tabClass = 'emby-tab-button'; @@ -163,9 +173,12 @@ define(['dom', 'browser', 'events', 'emby-tabs', 'emby-button'], function (dom, index++; return tabHtml; - }).join('') + '
'; + }).join('') + '
'; - tabsContainerElem.innerHTML = tabsHtml; + while (tabsContainerElem.children.length != 0) { + tabsContainerElem.removeChild(tabsContainerElem.children[0]); + } + tabsContainerElem.appendChild(tabsElement); document.body.classList.add('withSectionTabs'); tabOwnerView = view; From fbaed0310ae2b193b6462c2bcff322732510ac9b Mon Sep 17 00:00:00 2001 From: Vasily Date: Mon, 27 Apr 2020 18:41:11 +0300 Subject: [PATCH 04/10] Fix webos detection --- src/scripts/browser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/browser.js b/src/scripts/browser.js index 8b21c85469..840ef6ac23 100644 --- a/src/scripts/browser.js +++ b/src/scripts/browser.js @@ -22,7 +22,7 @@ define([], function () { return true; } - if (userAgent.indexOf('webos') !== -1) { + if (userAgent.indexOf('web0s') !== -1) { return true; } From de27ce0432e599a1dc24584e9f8cb0a784e74918 Mon Sep 17 00:00:00 2001 From: Vasily Date: Mon, 27 Apr 2020 18:51:04 +0300 Subject: [PATCH 05/10] restore gulpfile --- gulpfile.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 865f033dbf..4556e71bc8 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -116,12 +116,12 @@ const pipelineJavascript = lazypipe() ] }); }) -// .pipe(function () { -// return terser({ -// keep_fnames: true, -// mangle: false -// }); -// }) + .pipe(function () { + return terser({ + keep_fnames: true, + mangle: false + }); + }) .pipe(function () { return mode.development(sourcemaps.write('.')); }); From 0ec98cc146fe8c54bafa18305289112d49df46e1 Mon Sep 17 00:00:00 2001 From: Vasily Date: Mon, 27 Apr 2020 23:09:59 +0300 Subject: [PATCH 06/10] Add option to device profileBuilder() to accept client render of ASS --- src/components/apphost.js | 17 +++-------------- src/scripts/browserdeviceprofile.js | 10 ++++++++++ 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/components/apphost.js b/src/components/apphost.js index 6d7e857c32..aa1a33bda5 100644 --- a/src/components/apphost.js +++ b/src/components/apphost.js @@ -46,20 +46,9 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "webSettings"], f if (window.NativeShell) { profile = window.NativeShell.AppHost.getDeviceProfile(profileBuilder); } else { - profile = profileBuilder(getBaseProfileOptions(item)); - - if (item && !options.isRetry && "allcomplexformats" !== appSettings.get("subtitleburnin")) { - if (!browser.orsay && !browser.tizen) { - profile.SubtitleProfiles.push({ - Format: "ass", - Method: "External" - }); - profile.SubtitleProfiles.push({ - Format: "ssa", - Method: "External" - }); - } - } + var builderOpts = getBaseProfileOptions(item); + builderOpts.enableSsaRender = (item && !options.isRetry && "allcomplexformats" !== appSettings.get("subtitleburnin")); + profile = profileBuilder(builderOpts); } resolve(profile); diff --git a/src/scripts/browserdeviceprofile.js b/src/scripts/browserdeviceprofile.js index 570c0d2fa1..a269498dd0 100644 --- a/src/scripts/browserdeviceprofile.js +++ b/src/scripts/browserdeviceprofile.js @@ -887,6 +887,16 @@ define(['browser'], function (browser) { Method: 'External' }); } + if (options.enableSsaRender) { + profile.SubtitleProfiles.push({ + Format: 'ass', + Method: 'External' + }); + profile.SubtitleProfiles.push({ + Format: 'ssa', + Method: 'External' + }); + } profile.ResponseProfiles = []; profile.ResponseProfiles.push({ From 4609a8f2d010d5621b028f9df77f5053ece19152 Mon Sep 17 00:00:00 2001 From: Vasily Date: Tue, 28 Apr 2020 00:22:32 +0300 Subject: [PATCH 07/10] Fix moved filesystem.js --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4a879b736f..6f4e18c146 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "src/components/cardbuilder/cardBuilder.js", "src/scripts/dom.js", "src/components/filedownloader.js", - "src/components/filesystem.js", + "src/scripts/filesystem.js", "src/scripts/keyboardnavigation.js", "src/components/sanatizefilename.js", "src/components/scrollManager.js", From e4bafe3c05990f877d436c00b62d2251d196bd66 Mon Sep 17 00:00:00 2001 From: Vasily Date: Tue, 28 Apr 2020 14:14:37 +0300 Subject: [PATCH 08/10] temp break stuff back --- src/components/maintabsmanager.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/components/maintabsmanager.js b/src/components/maintabsmanager.js index bbb38a2706..656bfb05cd 100644 --- a/src/components/maintabsmanager.js +++ b/src/components/maintabsmanager.js @@ -139,7 +139,7 @@ define(['dom', 'browser', 'events', 'emby-tabs', 'emby-button'], function (dom, var index = 0; - var tabsElement; + /*var tabsElement; try { tabsElement = document.createElement('div', {is: 'emby-tabs'}); } catch (err) { @@ -150,7 +150,8 @@ define(['dom', 'browser', 'events', 'emby-tabs', 'emby-button'], function (dom, tabsElement.setAttribute('data-index', selectedIndex); } tabsElement.className = 'tabs-viewmenubar'; - tabsElement.innerHTML = '
' + getTabsFn().map(function (t) { + tabsElement.innerHTML = '
' + getTabsFn().map(function (t) {*/ + var html = '
' + '
' + getTabsFn().map(function (t) {*/ var tabClass = 'emby-tab-button'; @@ -173,12 +174,13 @@ define(['dom', 'browser', 'events', 'emby-tabs', 'emby-button'], function (dom, index++; return tabHtml; - }).join('') + '
'; + }).join('') + '
'; - while (tabsContainerElem.children.length != 0) { + /*while (tabsContainerElem.children.length != 0) { tabsContainerElem.removeChild(tabsContainerElem.children[0]); } - tabsContainerElem.appendChild(tabsElement); + tabsContainerElem.appendChild(tabsElement);*/ + tabsContainerElem.innerHTML = html; document.body.classList.add('withSectionTabs'); tabOwnerView = view; From 0bd9e87b38a10e87453841873bd748145c55b257 Mon Sep 17 00:00:00 2001 From: Vasily Date: Tue, 28 Apr 2020 15:04:39 +0300 Subject: [PATCH 09/10] Use CustomElements.upgradeSubtree() as an easier way of making sure the element is ready --- src/components/maintabsmanager.js | 22 ++++------------------ src/scripts/site.js | 5 +---- 2 files changed, 5 insertions(+), 22 deletions(-) diff --git a/src/components/maintabsmanager.js b/src/components/maintabsmanager.js index 656bfb05cd..7c8cce368d 100644 --- a/src/components/maintabsmanager.js +++ b/src/components/maintabsmanager.js @@ -139,19 +139,8 @@ define(['dom', 'browser', 'events', 'emby-tabs', 'emby-button'], function (dom, var index = 0; - /*var tabsElement; - try { - tabsElement = document.createElement('div', {is: 'emby-tabs'}); - } catch (err) { - // older browser not supporting options for createElement - tabsElement = document.createElement('div', 'emby-tabs'); - } - if (selectedIndex != null) { - tabsElement.setAttribute('data-index', selectedIndex); - } - tabsElement.className = 'tabs-viewmenubar'; - tabsElement.innerHTML = '
' + getTabsFn().map(function (t) {*/ - var html = '
' + '
' + getTabsFn().map(function (t) {*/ + var indexAttribute = selectedIndex == null ? '' : (' data-index="' + selectedIndex + '"'); + var tabsHtml = '
' + getTabsFn().map(function (t) { var tabClass = 'emby-tab-button'; @@ -176,11 +165,8 @@ define(['dom', 'browser', 'events', 'emby-tabs', 'emby-button'], function (dom, }).join('') + '
'; - /*while (tabsContainerElem.children.length != 0) { - tabsContainerElem.removeChild(tabsContainerElem.children[0]); - } - tabsContainerElem.appendChild(tabsElement);*/ - tabsContainerElem.innerHTML = html; + tabsContainerElem.innerHTML = tabsHtml; + CustomElements.upgradeSubtree(tabsContainerElem); document.body.classList.add('withSectionTabs'); tabOwnerView = view; diff --git a/src/scripts/site.js b/src/scripts/site.js index fb9043aa2d..5ce093e628 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -709,10 +709,7 @@ var AppInfo = {}; onError: onRequireJsError }); - require(["fetch"], function (fetch) { - console.debug("fetch is here", fetch); - }); - + require(["fetch"]); require(["polyfill"]); require(["fast-text-encoding"]); require(["intersection-observer"]); From eb00af5e843603eeab2f362a70c9f859f239a374 Mon Sep 17 00:00:00 2001 From: Vasily Date: Thu, 30 Apr 2020 01:41:52 +0300 Subject: [PATCH 10/10] Update src/components/maintabsmanager.js Co-Authored-By: Dmitry Lyzo <56478732+dmitrylyzo@users.noreply.github.com> --- src/components/maintabsmanager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/maintabsmanager.js b/src/components/maintabsmanager.js index 7c8cce368d..e1c5434363 100644 --- a/src/components/maintabsmanager.js +++ b/src/components/maintabsmanager.js @@ -166,7 +166,7 @@ define(['dom', 'browser', 'events', 'emby-tabs', 'emby-button'], function (dom, }).join('') + '
'; tabsContainerElem.innerHTML = tabsHtml; - CustomElements.upgradeSubtree(tabsContainerElem); + window.CustomElements.upgradeSubtree(tabsContainerElem); document.body.classList.add('withSectionTabs'); tabOwnerView = view;