onion/js/utils/error_utils.js

53 lines
1.4 KiB
JavaScript

'use strict';
import AppConstants from '../constants/application_constants';
/**
* Logs an error in to the console.
* Optionally, a comment can be defined.
* @param {Error} error a Javascript error
* @param {string} comment Will also be submitted to Sentry, but will not be logged
*/
function logGlobal(error, comment) {
console.error(error);
if (error.hasOwnProperty('json')) {
comment = {
...comment,
json: error.json
};
}
}
export function initLogging() {
console.logGlobal = logGlobal;
}
/*
* Gets the json errors from the error as an array
* @param {Error} error A Javascript error
* @return {Array} List of json errors
*/
export function getJsonErrorsAsArray(error) {
const { json: { errors = {} } = {} } = error;
const errorArrays = Object
.keys(errors)
.map((errorKey) => {
return errors[errorKey];
});
// Collapse each errorKey's errors into a flat array
return [].concat(...errorArrays);
}
/*
* Tries to get an error message from the error, either by using its notification
* property or first json error (if any)
* @param {Error} error A Javascript error
* @return {string} Error message string
*/
export function getErrorNotificationMessage(error) {
return (error && error.notification) || getJsonErrorsAsArray(error)[0] || '';
}