mirror of
https://github.com/transatoshi-mw/grin-web-wallet.git
synced 2025-10-06 15:52:47 +00:00
124 lines
2.4 KiB
JavaScript
Executable File
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);
|
|
});
|