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

133 lines
3.0 KiB
JavaScript
Executable File

// Use strict
"use strict";
// Classes
// Initial heights obtained class
class InitialHeightsObtained {
// Public
// Constructor
constructor(node) {
// Create database
Database.createDatabase(function(database, currentVersion, databaseTransaction) {
// Create or get initial heights obtained object store
var initialHeightsObtainedObjectStore = (currentVersion === Database.NO_CURRENT_VERSION) ? database.createObjectStore(InitialHeightsObtained.OBJECT_STORE_NAME, {
// Key path
"keyPath": [
// Wallet type
Database.toKeyPath(InitialHeightsObtained.DATABASE_WALLET_TYPE_NAME),
// Network type
Database.toKeyPath(InitialHeightsObtained.DATABASE_NETWORK_TYPE_NAME)
]
}) : databaseTransaction.objectStore(InitialHeightsObtained.OBJECT_STORE_NAME);
});
}
// Get obtained
getObtained() {
// Return promise
return new Promise(function(resolve, reject) {
// Return getting the initial heights obtained with the wallet type and network type in the database
return Database.getResults(InitialHeightsObtained.OBJECT_STORE_NAME, 0, 1, Database.NO_INDEX, IDBKeyRange.only([
// Wallet type
Consensus.getWalletType(),
// Network type
Consensus.getNetworkType(),
])).then(function(results) {
// Check if initial heights were obtained
if(results["length"] !== 0) {
// Resolve true
resolve(true);
}
// Otherwise
else {
// Resolve false
resolve(false);
}
// Catch errors
}).catch(function(error) {
// Reject error
reject("The database failed.");
});
});
}
// Set obtained
setObtained() {
// Return promise
return new Promise(function(resolve, reject) {
// Save initial heights obtained for the wallet type and network type in the database
Database.saveResults(InitialHeightsObtained.OBJECT_STORE_NAME, [{
// Wallet type
[Database.toKeyPath(InitialHeightsObtained.DATABASE_WALLET_TYPE_NAME)]: Consensus.getWalletType(),
// Network type
[Database.toKeyPath(InitialHeightsObtained.DATABASE_NETWORK_TYPE_NAME)]: Consensus.getNetworkType()
}], [], Database.CREATE_NEW_TRANSACTION, Database.STRICT_DURABILITY).then(function() {
// Resolve
resolve();
// Catch errors
}).catch(function(error) {
// Reject error
reject("The database failed.");
});
});
}
// Private
// Object store name
static get OBJECT_STORE_NAME() {
// Return object store name
return "Initial Heights Obtained";
}
// Database wallet type name
static get DATABASE_WALLET_TYPE_NAME() {
// Return database wallet type name
return "Wallet Type";
}
// Database network type name
static get DATABASE_NETWORK_TYPE_NAME() {
// Return database network type name
return "Network Type";
}
}
// Main function
// Set global object's initial heights obtained
globalThis["InitialHeightsObtained"] = InitialHeightsObtained;