import * as bootbox from "bootbox";
/**
* If this class is imported the user is shown an error dialog if he calls an page via Turbo and an error is responded.
* @type {ErrorHandlerHelper}
*/
const ErrorHandlerHelper = class {
constructor() {
console.log('Error Handler registered');
const content = document.getElementById('content');
content.addEventListener('turbo:before-fetch-response', (event) => this.handleError(event));
}
handleError(event) {
const fetchResponse = event.detail.fetchResponse;
const response = fetchResponse.response;
//Ignore aborted requests.
if (response.statusText =='abort' || response.status == 0) {
return;
}
if(fetchResponse.failed) {
//Create error text
let title = response.statusText + ' (Status ' + response.status + ')';
/**
switch(response.status) {
case 500:
title = 'Internal Server Error!';
break;
case 404:
title = "Site not found!";
break;
case 403:
title = "Permission denied!";
break;
} **/
const alert = bootbox.alert(
{
size: 'large',
message: function() {
let url = fetchResponse.location.toString();
let msg = `Error calling ${url}. `;
msg += 'Try to reload the page or contact the administrator if this error persists.'
msg += '
' + 'View details' + "";
msg += "