From 097fb4896da04c27bcc2ea25d13bec975ea41d66 Mon Sep 17 00:00:00 2001 From: djmaze Date: Fri, 4 Sep 2020 14:36:24 +0200 Subject: [PATCH] Bugfix: invalid settingsGet in dev/Stores/Admin/App.js Cleanup login/logout location reloading --- README.md | 18 ++++++------ dev/App/Abstract.js | 49 ++++++--------------------------- dev/App/User.js | 14 ++-------- dev/Knoin/Knoin.js | 12 ++++++++ dev/Promises/AbstractAjax.js | 8 ++---- dev/Remote/AbstractAjax.js | 8 ++---- dev/Stores/Admin/App.js | 2 +- dev/View/Admin/Login.js | 6 ++-- dev/View/Admin/Settings/Pane.js | 6 +--- dev/View/User/Login.js | 10 +++---- dev/bootstrap.js | 5 ++-- package.json | 3 +- yarn.lock | 2 +- 13 files changed, 51 insertions(+), 92 deletions(-) diff --git a/README.md b/README.md index e28c68cb3..2c92d9c48 100644 --- a/README.md +++ b/README.md @@ -86,23 +86,23 @@ Things might work in Edge 18, Firefox 50-62 and Chrome 54-68 due to one polyfill |js/* |1.14.0 |native | |----------- |--------: |--------: | -|admin.js |2.130.942 | 942.565 | -|app.js |4.184.455 |2.563.204 | +|admin.js |2.130.942 | 939.722 | +|app.js |4.184.455 |2.559.620 | |boot.js | 671.522 | 7.265 | |libs.js | 647.614 | 312.269 | |polyfills.js | 325.834 | 0 | -|TOTAL |7.960.367 |3.825.303 | +|TOTAL |7.960.367 |3.818.876 | |js/min/* |1.14.0 |native |gzip 1.14 |gzip |brotli | |--------------- |--------: |--------: |--------: |--------: |--------: | -|admin.min.js | 252.147 | 129.058 | 73.657 | 37.631 | 32.250 | -|app.min.js | 511.202 | 350.074 |140.462 | 91.841 | 73.757 | -|boot.min.js | 66.007 | 4.274 | 22.567 | 1.934 | 1.635 | -|libs.min.js | 572.545 | 295.776 |176.720 | 91.524 | 80.746 | +|admin.min.js | 252.147 | 128.874 | 73.657 | 37.574 | 32.236 | +|app.min.js | 511.202 | 349.777 |140.462 | 91.836 | 73.775 | +|boot.min.js | 66.007 | 4.258 | 22.567 | 1.946 | 1.648 | +|libs.min.js | 572.545 | 295.716 |176.720 | 91.532 | 80.863 | |polyfills.min.js | 32.452 | 0 | 11.312 | 0 | 0 | -|TOTAL |1.434.353 | 779.182 |424.718 |222.930 |188.388 | +|TOTAL |1.434.353 | 778.625 |424.718 |222.888 |188.522 | -655.171 bytes (201.788 gzip) is not much, but it feels faster. +655.728 bytes (201.830 gzip) is not much, but it feels faster. ### CSS changes diff --git a/dev/App/Abstract.js b/dev/App/Abstract.js index 3f65aa429..2b8093e61 100644 --- a/dev/App/Abstract.js +++ b/dev/App/Abstract.js @@ -8,13 +8,13 @@ import { } from 'Common/Globals'; import { KeyState } from 'Common/Enums'; -import { root, rootAdmin, rootUser } from 'Common/Links'; +import { rootAdmin, rootUser } from 'Common/Links'; import { initOnStartOrLangChange, initNotificationLanguage } from 'Common/Translator'; import LanguageStore from 'Stores/Language'; import ThemeStore from 'Stores/Theme'; -import { routeOff, setHash } from 'Knoin/Knoin'; +import { routeReload } from 'Knoin/Knoin'; import { AbstractBoot } from 'Knoin/AbstractBoot'; const Settings = rl.settings; @@ -76,10 +76,6 @@ class AbstractApp extends AbstractBoot { return true; } - redirectToAdminPanel() { - setTimeout(() => location.href = rootAdmin(), 100); - } - /** * @param {string} token */ @@ -88,43 +84,16 @@ class AbstractApp extends AbstractBoot { Settings.set('AuthAccountHash', token); } - /** - * @param {boolean=} admin = false - * @param {boolean=} logout = false - * @param {boolean=} close = false - */ - loginAndLogoutReload(admin = false, logout = false, close = false) { - const inIframe = !!Settings.app('inIframe'), - logoutLink = admin ? rootAdmin() : rootUser(); + logoutReload(close = false) { + const logoutLink = rl.adminArea() ? rootAdmin() : rootUser(); - if (logout) { - rl.hash.clear(); - } + rl.hash.clear(); + close && window.close && window.close(); - if (logout && close && window.close) { - window.close(); - } - - if (logout && location.href !== logoutLink) { - setTimeout(() => { - if (inIframe && parent) { - parent.location.href = logoutLink; - } else { - location.href = logoutLink; - } - }, 100); + if (location.href !== logoutLink) { + setTimeout(() => (Settings.app('inIframe') ? parent : window).location.href = logoutLink, 100); } else { - routeOff(); - setHash(root(), true); - routeOff(); - - setTimeout(() => { - if (inIframe && parent) { - parent.location.reload(); - } else { - location.reload(); - } - }, 100); + routeReload(); } } diff --git a/dev/App/User.js b/dev/App/User.js index a0204de5e..e00c2135c 100644 --- a/dev/App/User.js +++ b/dev/App/User.js @@ -125,11 +125,7 @@ class AppUser extends AbstractApp { } reload() { - if (parent && !!Settings.app('inIframe')) { - parent.location.reload(); - } else { - location.reload(); - } + (Settings.app('inIframe') ? parent : window).location.reload(); } reloadFlagsCurrentMessageListAndMessageFromCache() { @@ -896,13 +892,7 @@ class AppUser extends AbstractApp { } logout() { - Remote.logout(() => { - this.loginAndLogoutReload( - false, - true, - 0 < (Settings.get('ParentEmail')||{length:0}).length - ); - }); + Remote.logout(() => this.logoutReload(0 < (Settings.get('ParentEmail')||{length:0}).length)); } bootstartTwoFactorScreen() { diff --git a/dev/Knoin/Knoin.js b/dev/Knoin/Knoin.js index 47f119958..a7f57a9c8 100644 --- a/dev/Knoin/Knoin.js +++ b/dev/Knoin/Knoin.js @@ -2,6 +2,8 @@ import ko from 'ko'; import { $htmlCL, VIEW_MODELS } from 'Common/Globals'; +import { root } from 'Common/Links'; + //import { bMobileDevice } from 'Common/Globals'; let currentScreen = null, @@ -80,6 +82,16 @@ export function addSettingsViewModel(SettingsViewModelClass, template, labelName VIEW_MODELS.settings.push(SettingsViewModelClass); } +/** + * @returns {void} + */ +export function routeReload() { + routeOff(); + setHash(root(), true); + routeOff(); + setTimeout(() => (rl.settings.app('inIframe') ? parent : window).location.reload(), 100); +} + /** * @returns {void} */ diff --git a/dev/Promises/AbstractAjax.js b/dev/Promises/AbstractAjax.js index 4c9a798d2..e208a7f58 100644 --- a/dev/Promises/AbstractAjax.js +++ b/dev/Promises/AbstractAjax.js @@ -130,17 +130,15 @@ class AbstractAjaxPromises extends AbstractBasicPromises { } if (TOKEN_ERROR_LIMIT < GlobalsData.iTokenErrorCount) { - if (GlobalsData.__APP__ && GlobalsData.__APP__.loginAndLogoutReload) { - GlobalsData.__APP__.loginAndLogoutReload(false, true); - } + rl.logoutReload(); } if (data.ClearAuth || data.Logout || AJAX_ERROR_LIMIT < GlobalsData.iAjaxErrorCount) { if (GlobalsData.__APP__) { rl.hash.clear(); - if (!data.ClearAuth && GlobalsData.__APP__.loginAndLogoutReload) { - GlobalsData.__APP__.loginAndLogoutReload(false, true); + if (!data.ClearAuth) { + rl.logoutReload(); } } } diff --git a/dev/Remote/AbstractAjax.js b/dev/Remote/AbstractAjax.js index 16ca43ad4..92755be71 100644 --- a/dev/Remote/AbstractAjax.js +++ b/dev/Remote/AbstractAjax.js @@ -60,17 +60,15 @@ class AbstractAjaxRemote { } if (TOKEN_ERROR_LIMIT < GlobalsData.iTokenErrorCount) { - if (GlobalsData.__APP__ && GlobalsData.__APP__.loginAndLogoutReload) { - GlobalsData.__APP__.loginAndLogoutReload(false, true); - } + rl.logoutReload(); } if (oData.ClearAuth || oData.Logout || AJAX_ERROR_LIMIT < GlobalsData.iAjaxErrorCount) { if (GlobalsData.__APP__) { rl.hash.clear(); - if (!oData.ClearAuth && GlobalsData.__APP__.loginAndLogoutReload) { - GlobalsData.__APP__.loginAndLogoutReload(false, true); + if (!oData.ClearAuth) { + rl.logoutReload(); } } } diff --git a/dev/Stores/Admin/App.js b/dev/Stores/Admin/App.js index 6fc4ecca7..fd612f479 100644 --- a/dev/Stores/Admin/App.js +++ b/dev/Stores/Admin/App.js @@ -17,7 +17,7 @@ class AppAdminStore extends AbstractAppStore { populate() { super.populate(); - const settingsGet = rl.settings + const settingsGet = rl.settings.get; this.determineUserLanguage(!!settingsGet('DetermineUserLanguage')); this.determineUserDomain(!!settingsGet('DetermineUserDomain')); diff --git a/dev/View/Admin/Login.js b/dev/View/Admin/Login.js index 07b4ff5e4..46c94e54a 100644 --- a/dev/View/Admin/Login.js +++ b/dev/View/Admin/Login.js @@ -5,9 +5,7 @@ import { getNotification } from 'Common/Translator'; import Remote from 'Remote/Admin/Ajax'; -import { getApp } from 'Helper/Apps/Admin'; - -import { view, command, ViewType, routeOff } from 'Knoin/Knoin'; +import { view, command, ViewType, routeOff, routeReload } from 'Knoin/Knoin'; import { AbstractViewNext } from 'Knoin/AbstractViewNext'; @view({ @@ -70,7 +68,7 @@ class LoginAdminView extends AbstractViewNext { (sResult, oData) => { if (StorageResultType.Success === sResult && oData && 'AdminLogin' === oData.Action) { if (oData.Result) { - getApp().loginAndLogoutReload(true); + routeReload(); } else if (oData.ErrorCode) { this.submitRequest(false); this.submitError(getNotification(oData.ErrorCode)); diff --git a/dev/View/Admin/Settings/Pane.js b/dev/View/Admin/Settings/Pane.js index de087ef96..e7adc02da 100644 --- a/dev/View/Admin/Settings/Pane.js +++ b/dev/View/Admin/Settings/Pane.js @@ -6,8 +6,6 @@ import DomainStore from 'Stores/Admin/Domain'; import PluginStore from 'Stores/Admin/Plugin'; import PackageStore from 'Stores/Admin/Package'; -import { getApp } from 'Helper/Apps/Admin'; - import { view, ViewType } from 'Knoin/Knoin'; import { AbstractViewNext } from 'Knoin/AbstractViewNext'; @@ -38,9 +36,7 @@ class PaneSettingsAdminView extends AbstractViewNext { } logoutClick() { - Remote.adminLogout(() => { - getApp().loginAndLogoutReload(true, true); - }); + Remote.adminLogout(() => rl.logoutReload()); } } diff --git a/dev/View/User/Login.js b/dev/View/User/Login.js index e7faead5a..d1645f68a 100644 --- a/dev/View/User/Login.js +++ b/dev/View/User/Login.js @@ -19,11 +19,11 @@ import * as Local from 'Storage/Client'; import Remote from 'Remote/User/Ajax'; -import { getApp } from 'Helper/Apps/User'; - -import { view, command, ViewType, routeOff, showScreenPopup } from 'Knoin/Knoin'; +import { view, command, ViewType, routeOff, showScreenPopup, routeReload } from 'Knoin/Knoin'; import { AbstractViewNext } from 'Knoin/AbstractViewNext'; +import { rootAdmin } from 'Common/Links'; + const Settings = rl.settings; @view({ @@ -180,9 +180,9 @@ class LoginUserView extends AbstractViewNext { setTimeout(() => this.querySelector('.inputAdditionalCode').focus(), 100); } else if (oData.Admin) { - getApp().redirectToAdminPanel(); + setTimeout(() => location.href = rootAdmin(), 100); } else { - getApp().loginAndLogoutReload(false); + routeReload(); } } else if (oData.ErrorCode) { this.submitRequest(false); diff --git a/dev/bootstrap.js b/dev/bootstrap.js index ac0ee5450..c8f661af4 100644 --- a/dev/bootstrap.js +++ b/dev/bootstrap.js @@ -34,7 +34,8 @@ export default (App) => { $htmlCL.add(bMobileDevice ? 'mobile' : 'no-mobile'); addEventListener('click', ()=>rl.Dropdowns.detectVisibility()); - const rl = window.rl || {}; + rl.app = App; + rl.logoutReload = () => App && App.logoutReload && App.logoutReload(); rl.i18n = i18n; @@ -57,8 +58,6 @@ export default (App) => { dropdownVisibility(!!rl.Dropdowns.find(item => item.classList.contains('open'))) ).debounce(50); - window.rl = rl; - window.__APP_BOOT = fErrorCallback => { const doc = document, cb = () => setTimeout(() => { diff --git a/package.json b/package.json index 2a0baa793..5c6913d59 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "gulp-size": "3.0.0", "gulp-sourcemaps": "2.6.5", "gulp-stripbom": "1.0.5", - "gulp-terser": "^1.2.0", + "gulp-terser": "^1.4.0", "gulp-through": "0.4.0", "gulp-util": "3.0.8", "gulp-zip": "5.0.1", @@ -97,7 +97,6 @@ "style-loader": "1.1.3" }, "dependencies": { - "gulp-terser": "^1.2.0", "webpack": "4.42.0", "webpack-cli": "3.3.11" } diff --git a/yarn.lock b/yarn.lock index 955713652..8b2b3a973 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3381,7 +3381,7 @@ gulp-stripbom@1.0.5: strip-bom "^1.0.0" through2 "^0.5.1" -gulp-terser@^1.2.0: +gulp-terser@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/gulp-terser/-/gulp-terser-1.4.0.tgz#0ac4dfdbed4ab46906007c5b358810c1642b9764" integrity sha512-7df9leJna3WOmj76tYHxjpn7BSU+vmKVjVSd6bz3uLEyrzCfZI97KPhRcIabrSNzs0UY/UXTt+JwkxPw3sF85w==