Files
grin-web-wallet/scripts/fatal_error.js
2024-12-20 18:08:44 -08:00

124 lines
2.4 KiB
JavaScript
Executable File

// Use strict
"use strict";
// Classes
// Fatal error class
class FatalError {
// Public
// Constructor
constructor(errorType = FatalError.UNKNOWN_ERROR) {
// Check if a fatal error hasn't occurred
if(FatalError.errorOccurred === false) {
// Set that a fatal error occurred
FatalError.errorOccurred = true;
// Check error type
switch(errorType) {
// Local storage error
case FatalError.LOCAL_STORAGE_ERROR:
// Log error
console.log("A local storage error occurred.");
// Break
break;
// Database error
case FatalError.DATABASE_ERROR:
// Log error
console.log("A database error occurred.");
// Break
break;
// Unknown error and default
case FatalError.UNKNOWN_ERROR:
default:
// Log error
console.log("An unknown error occurred.");
// Break
break;
}
// Log stack trace
console.trace();
// Prevent extension from interrupting on close
Extension.preventInterruptOnClose();
// Check if not an extension and not loading from file
if(Common.isExtension() === false && location["protocol"] !== Common.FILE_PROTOCOL) {
// Go to error page
location.replace(((location["protocol"] === Common.HTTPS_PROTOCOL) ? Common.HTTPS_PROTOCOL : Common.HTTP_PROTOCOL) + "//" + location["hostname"] + FatalError.ERROR_PAGE_URL);
}
// Otherwise
else {
// Close
window.close();
}
}
}
// Local storage error
static get LOCAL_STORAGE_ERROR() {
// Return local storage error
return 0;
}
// Database error
static get DATABASE_ERROR() {
// Return database error
return FatalError.LOCAL_STORAGE_ERROR + 1;
}
// Unknown error
static get UNKNOWN_ERROR() {
// Return unknown error
return FatalError.DATABASE_ERROR + 1;
}
// Private
// Error page URL
static get ERROR_PAGE_URL() {
// Return error page URL
return "/errors/error.html";
}
}
// Main function
// Set global object's fatal error
globalThis["FatalError"] = FatalError;
// Set fatal error error occurred
FatalError.errorOccurred = false;
// Window error event
$(window).on("error", function() {
// Check if using application error handler
if(usingApplicationErrorHandler() === true)
// Trigger a fatal error
new FatalError(FatalError.UNKNOWN_ERROR);
});