From 7a98105960dcbb53b4a221e2337ac7d1c955bd92 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 11 Dec 2018 13:18:38 +0300 Subject: remove old fatalError(), move everything to App.Error update exception dialog css --- js/AppBase.js | 53 +++++++++++++++++++++++++++++++++++++++++------------ js/common.js | 45 --------------------------------------------- js/tt-rss.js | 2 +- 3 files changed, 42 insertions(+), 58 deletions(-) (limited to 'js') diff --git a/js/AppBase.js b/js/AppBase.js index 4e0bdc765..6fc4f8bff 100644 --- a/js/AppBase.js +++ b/js/AppBase.js @@ -191,17 +191,17 @@ define(["dojo/_base/declare"], function (declare) { const reply = JSON.parse(transport.responseText); if (reply) { - const error = reply['error']; if (error) { const code = error['code']; - const msg = error['msg']; + const msg = error['message']; - console.warn("[handleRpcJson] received fatal error " + code + "/" + msg); + console.warn("[handleRpcJson] received fatal error ", code, msg); if (code != 0) { - fatalError(code, msg); + /* global ERRORS */ + this.Error.fatal(ERRORS[code], {info: msg, code: code}); return false; } } @@ -299,18 +299,22 @@ define(["dojo/_base/declare"], function (declare) { PluginHost.run(PluginHost.HOOK_RUNTIME_INFO_LOADED, data); }, backendSanityCallback: function (transport) { - const reply = JSON.parse(transport.responseText); + /* global ERRORS */ + if (!reply) { - fatalError(3, "Sanity check: invalid RPC reply", transport.responseText); + this.Error.fatal(ERRORS[3], {info: transport.responseText}); return; } - const error_code = reply['error']['code']; + if (reply['error']) { + const code = reply['error']['code']; - if (error_code && error_code != 0) { - return fatalError(error_code, reply['error']['message']); + if (code && code != 0) { + return this.Error.fatal(ERRORS[code], + {code: code, info: reply['error']['message']}); + } } console.log("sanity check ok"); @@ -387,6 +391,22 @@ define(["dojo/_base/declare"], function (declare) { return this.displayDlg(__("Error explained"), "explainError", code); }, Error: { + fatal: function (error, params) { + params = params || {}; + + if (params.code) { + if (params.code == 6) { + window.location.href = "index.php"; + return; + } else if (params.code == 5) { + window.location.href = "public.php?op=dbupdate"; + return; + } + } + + return this.report(error, + Object.extend({title: __("Fatal error")}, params)); + }, report: function(error, params) { params = params || {}; @@ -414,10 +434,19 @@ define(["dojo/_base/declare"], function (declare) { if (dijit.byId("exceptionDlg")) dijit.byId("exceptionDlg").destroyRecursive(); + let stack_msg = ""; + + if (error.stack) + stack_msg += `
Stack trace:
+ `; + + if (params.info) + stack_msg += `
Additional information:
+ `; + let content = `

${message}

-
Stack trace:
- + ${stack_msg}
@@ -426,7 +455,7 @@ define(["dojo/_base/declare"], function (declare) { const dialog = new dijit.Dialog({ id: "exceptionDlg", - title: "Unhandled exception", + title: params.title || __("Unhandled exception"), style: "width: 600px", content: content }); diff --git a/js/common.js b/js/common.js index 17d1fe444..e93087eb4 100755 --- a/js/common.js +++ b/js/common.js @@ -246,51 +246,6 @@ function displayIfChecked(checkbox, elemId) { } } -function fatalError(code, msg, ext_info) { - if (code == 6) { - window.location.href = "index.php"; - } else if (code == 5) { - window.location.href = "public.php?op=dbupdate"; - } else { - - if (msg == "") msg = "Unknown error"; - - if (ext_info) { - if (ext_info.responseText) { - ext_info = ext_info.responseText; - } - } - - /* global ERRORS */ - if (ERRORS && ERRORS[code] && !msg) { - msg = ERRORS[code]; - } - - let content = `
Error code: ${code}
-

${msg}

`; - - if (ext_info) { - content = content + `
Additional information:
- `; - } - - content += `
-
`; - - const dialog = new dijit.Dialog({ - title: "Fatal error", - style: "width: 600px", - content: content}); - - dialog.show(); - - } - - return false; - -} - /* function strip_tags(s) { return s.replace(/<\/?[^>]+(>|$)/g, ""); } */ diff --git a/js/tt-rss.js b/js/tt-rss.js index 26b1f7bba..eaf6ae1cd 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -103,7 +103,7 @@ require(["dojo/_base/kernel", }); if (errorMsg) { - fatalError(4, errorMsg, navigator.userAgent); + this.Error.fatal(errorMsg, {info: navigator.userAgent}); } return errorMsg == ""; -- cgit v1.2.3-54-g00ecf