diff options
Diffstat (limited to 'js/backoffice.js')
-rw-r--r-- | js/backoffice.js | 73 |
1 files changed, 66 insertions, 7 deletions
diff --git a/js/backoffice.js b/js/backoffice.js index 187ebf5..4f11d54 100644 --- a/js/backoffice.js +++ b/js/backoffice.js @@ -60,6 +60,65 @@ var LAST = 0; var SCROLL = true; /** + * Maps error codes from https://git.taler.net/exchange.git/tree/src/include/taler_error_codes.h + * to friendlier messages. + */ +function error_map(code){ + switch (code){ + + /* /history errors. */ + case "2200": + return "The timestamp used to query the history overflowed."; + case "2201": + return "Merchant had serious problems in its history database"; + case "2202": + return "The instance used to query the history is unknown"; + + /* /track/order errors. */ + case "2307": + /* Such errors should provide full proof to the user. */ + return "One of the coin was untraceable"; + case "2308": + case "2408": + return "Conflicting reports from the Exchange"; + case "2301": + return "Instance is unknown to track this order"; + case "2303": + case "2304": + case "2305": + case "1801": + return "Merchant database failed, code:" + code; + case "2306": + return "One of the coin failed at getting its WTID"; + + /* /track/transfer errors. */ + case "2410": + return "Exchange charged a higher wire fee than what " + + " it was originally advertised."; + case "2405": + return "Error from the exchange, no proof received!"; + case "2404": + case "2402": + return "Database failure, could not store results: " + code; + case "2406": + return "Database failure, could not retrieve previous results"; + case "2407": + return "Database failure, internal logic error"; + case "2409": + return "Merchant could not pack the JSON response"; + case "2403": + return "Merchant failed to request /track/transfer to \ + the exchange"; + case "2400": + return "Exchange timed out.."; + + default: + return "Error code not given."; + } + +} + +/** * Convert Taler-compliant amount to human-friendly string. * The amount may be both a string or object type. */ @@ -212,25 +271,25 @@ var show_error = show_warning = function(response_text){ toggle_loader(); close_popup(); - var msg = response_text; + var msg; + var hint = ""; try{ var parse = JSON.parse(response_text); console.log("Response was at least JSON"); - if (parse['error']) - msg = parse['error']; + /* handles undefined codes too. */ + msg = error_map(parse['code']); - /* Give precedence to 'hint' as it is usually - * human-friendlier */ if (parse['hint']) - msg = parse['hint']; + hint = parse['hint']; } catch (e) { + msg = response_text; console.log("Must keep raw response"); } /* Get hold of the info bar. */ var info_bar = document.getElementById("information-bar"); - info_bar.innerHTML = `<p>${msg}</p>`; + info_bar.innerHTML = `<p>${msg} ${hint}</p>`; info_bar.style.visibility = "visible"; } |