From: Jo-Philipp Wich Date: Mon, 1 Apr 2019 13:30:42 +0000 (+0200) Subject: luci-base: luci.js: tweak error handling X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=5b7924c8087b93037ae20e03f35bd0c7e9e06a05;p=oweals%2Fluci.git luci-base: luci.js: tweak error handling If the ui class is loaded, use its modalDialog facility to display runtime errors, alternatively render them into the maincontent area. Also prevent duplication of stack trace information and throw a low level error on session expiration to allow higher layers to properly handle it. Signed-off-by: Jo-Philipp Wich --- diff --git a/modules/luci-base/htdocs/luci-static/resources/luci.js b/modules/luci-base/htdocs/luci-static/resources/luci.js index 07e8d8c88..c71865f96 100644 --- a/modules/luci-base/htdocs/luci-static/resources/luci.js +++ b/modules/luci-base/htdocs/luci-static/resources/luci.js @@ -488,12 +488,22 @@ } /* Append shortened & beautified stacktrace to message */ - e.message += '\n' + stack.join('\n') + var trace = stack.join('\n') .replace(/(.*?)@(.+):(\d+):(\d+)/g, ' at $1 ($2:$3:$4)'); + if (e.message.indexOf(trace) == -1) + e.message += '\n' + trace; + if (window.console && console.debug) console.debug(e); + if (this.ui) + this.ui.showModal(_('Runtime error'), + E('pre', { 'class': 'alert-message error' }, e)); + else + L.dom.content(document.querySelector('#maincontent'), + E('pre', { 'class': 'alert-message error' }, e)); + throw e; }, @@ -610,7 +620,7 @@ }, _('To login…'))) ]); - L.error('AuthenticationError', 'Session expired'); + throw 'Session expired'; }); originalCBIInit();