From f7d0b9491619262a8e420552872d16a6a5b9ca49 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 1 Sep 2020 13:32:12 +0300 Subject: [PATCH 1/3] Babel libarchive --- webpack.dev.js | 2 +- webpack.prod.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/webpack.dev.js b/webpack.dev.js index 3d0c2a48a0..33e171daa8 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -15,7 +15,7 @@ module.exports = merge(common, { rules: [ { test: /\.js$/, - exclude: /node_modules[\\/](?!date-fns|epubjs|jellyfin-apiclient|query-string|split-on-first|strict-uri-encode|xmldom)/, + exclude: /node_modules[\\/](?!date-fns|epubjs|libarchive|jellyfin-apiclient|query-string|split-on-first|strict-uri-encode|xmldom)/, use: { loader: 'babel-loader', options: { diff --git a/webpack.prod.js b/webpack.prod.js index 52d6d0a865..408eb4bb59 100644 --- a/webpack.prod.js +++ b/webpack.prod.js @@ -8,7 +8,7 @@ module.exports = merge(common, { rules: [ { test: /\.js$/, - exclude: /node_modules[\\/](?!date-fns|epubjs|jellyfin-apiclient|query-string|split-on-first|strict-uri-encode|xmldom)/, + exclude: /node_modules[\\/](?!date-fns|epubjs|libarchive|jellyfin-apiclient|query-string|split-on-first|strict-uri-encode|xmldom)/, use: { loader: 'babel-loader', options: { From eccaad366e6150c7dfa2010275714ee8dba8aa07 Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Tue, 1 Sep 2020 23:52:27 +0300 Subject: [PATCH 2/3] Add timeout for polyfilled CustomElements (webOS 1.2) --- src/components/viewContainer.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/viewContainer.js b/src/components/viewContainer.js index 9d64130cdb..6be8cfd19b 100644 --- a/src/components/viewContainer.js +++ b/src/components/viewContainer.js @@ -82,7 +82,8 @@ import 'css!components/viewManager/viewContainer'; } allPages[pageIndex] = view; - setControllerClass(view, options).then(() => { + // Timeout for polyfilled CustomElements (webOS 1.2) + setControllerClass(view, options).then(() => new Promise((resolve) => setTimeout(resolve, 0))).then(() => { if (onBeforeChange) { onBeforeChange(view, false, options); } From 748592fa9310732bff082466a3308a51f24740bb Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Wed, 2 Sep 2020 01:06:07 +0300 Subject: [PATCH 3/3] Remove nested Promise --- src/components/viewContainer.js | 75 +++++++++++++++++---------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/src/components/viewContainer.js b/src/components/viewContainer.js index 6be8cfd19b..bbec0c0e65 100644 --- a/src/components/viewContainer.js +++ b/src/components/viewContainer.js @@ -36,54 +36,56 @@ import 'css!components/viewManager/viewContainer'; const newViewInfo = normalizeNewView(options, isPluginpage); const newView = newViewInfo.elem; - return new Promise((resolve) => { - const currentPage = allPages[pageIndex]; + const currentPage = allPages[pageIndex]; - if (currentPage) { - triggerDestroy(currentPage); - } + if (currentPage) { + triggerDestroy(currentPage); + } - let view = newView; + let view = newView; - if (typeof view == 'string') { - view = document.createElement('div'); - view.innerHTML = newView; - } + if (typeof view == 'string') { + view = document.createElement('div'); + view.innerHTML = newView; + } - view.classList.add('mainAnimatedPage'); + view.classList.add('mainAnimatedPage'); - if (currentPage) { - if (newViewInfo.hasScript && window.$) { - mainAnimatedPages.removeChild(currentPage); - view = $(view).appendTo(mainAnimatedPages)[0]; - } else { - mainAnimatedPages.replaceChild(view, currentPage); - } + if (currentPage) { + if (newViewInfo.hasScript && window.$) { + mainAnimatedPages.removeChild(currentPage); + view = $(view).appendTo(mainAnimatedPages)[0]; } else { - if (newViewInfo.hasScript && window.$) { - view = $(view).appendTo(mainAnimatedPages)[0]; - } else { - mainAnimatedPages.appendChild(view); - } + mainAnimatedPages.replaceChild(view, currentPage); } - - if (options.type) { - view.setAttribute('data-type', options.type); + } else { + if (newViewInfo.hasScript && window.$) { + view = $(view).appendTo(mainAnimatedPages)[0]; + } else { + mainAnimatedPages.appendChild(view); } + } - const properties = []; + if (options.type) { + view.setAttribute('data-type', options.type); + } - if (options.fullscreen) { - properties.push('fullscreen'); - } + const properties = []; - if (properties.length) { - view.setAttribute('data-properties', properties.join(',')); - } + if (options.fullscreen) { + properties.push('fullscreen'); + } - allPages[pageIndex] = view; + if (properties.length) { + view.setAttribute('data-properties', properties.join(',')); + } + + allPages[pageIndex] = view; + + return setControllerClass(view, options) // Timeout for polyfilled CustomElements (webOS 1.2) - setControllerClass(view, options).then(() => new Promise((resolve) => setTimeout(resolve, 0))).then(() => { + .then(() => new Promise((resolve) => setTimeout(resolve, 0))) + .then(() => { if (onBeforeChange) { onBeforeChange(view, false, options); } @@ -101,9 +103,8 @@ import 'css!components/viewManager/viewContainer'; $.mobile.activePage = view; } - resolve(view); + return view; }); - }); } }