From 5b7924c8087b93037ae20e03f35bd0c7e9e06a05 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Mon, 1 Apr 2019 15:30:42 +0200 Subject: [PATCH] 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 --- .../luci-base/htdocs/luci-static/resources/luci.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) 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(); -- 2.25.1