Select Git revision
-
Bekerle, Patrizio authoredBekerle, Patrizio authored
error.js 4.51 KiB
import {send as notify} from './notification';
import {createInstance} from './src/i18n';
/**
* Escapes html
*
* @param string
* @returns {string}
*/
export const escapeHTML = (string) => {
const pre = document.createElement('pre');
const text = document.createTextNode(string);
pre.appendChild(text);
return pre.innerHTML;
};
/**
* Strips html
*
* @param string
* @returns {string}
*/
export const stripHTML = (string) => {
var div = document.createElement('div');
div.innerHTML = string;
return div.textContent || div.innerText || '';
};
/**
* We need this mixin so we can use this.sendSetPropertyEvent to post analytics events
*/
export const errorMixin = {
/**
* Error handling for XHR errors
*
* @param jqXHR
* @param textStatus
* @param errorThrown
* @param icon
* @param lang
*/
handleXhrError(jqXHR, textStatus, errorThrown, icon = 'sad', lang = 'de') {
// return if user aborted the request
if (textStatus === 'abort') {
return;
}
let body;
const i18n = createInstance();
i18n.changeLanguage(lang);
if (
jqXHR.responseJSON !== undefined &&
jqXHR.responseJSON['hydra:description'] !== undefined
) {
// response is a JSON-LD
body = jqXHR.responseJSON['hydra:description'];
} else if (jqXHR.responseJSON !== undefined && jqXHR.responseJSON['detail'] !== undefined) {
// response is a plain JSON
body = jqXHR.responseJSON['detail'];
} else {
// no description available
body = textStatus;
if (errorThrown) {
body += ' - ' + errorThrown;
}
}