delete database when pressing reset-db

This commit is contained in:
Sebastian 2021-06-04 12:42:15 -03:00
parent e223c01275
commit e1b363c7dd
No known key found for this signature in database
GPG Key ID: BE4FF68352439FC1
3 changed files with 18 additions and 5 deletions

View File

@ -180,8 +180,8 @@ export async function openTalerDatabase(
return new Database(mainDbHandle, Stores);
}
export function deleteTalerDatabase(idbFactory: IDBFactory): void {
Database.deleteDatabase(idbFactory, TALER_DB_NAME);
export function deleteTalerDatabase(idbFactory: IDBFactory): Promise<void> {
return Database.deleteDatabase(idbFactory, TALER_DB_NAME);
}
export enum ReserveRecordStatus {

View File

@ -372,7 +372,17 @@ function runWithTransaction<T, StoreTypes extends Store<string, {}>>(
const stack = Error("Failed transaction was started here.");
return new Promise((resolve, reject) => {
const storeName = stores.map((x) => x.name);
const tx = db.transaction(storeName, mode);
let txOrUndef: IDBTransaction | undefined = undefined
try {
txOrUndef = db.transaction(storeName, mode);
} catch (e) {
logger.error("error opening transaction");
logger.error(`${e}`);
return
}
const tx = txOrUndef;
let funResult: any = undefined;
let gotFunResult = false;
tx.oncomplete = () => {
@ -513,8 +523,9 @@ export function openDatabase(
export class Database<StoreMap extends AnyStoreMap> {
constructor(private db: IDBDatabase, stores: StoreMap) {}
static deleteDatabase(idbFactory: IDBFactory, dbName: string): void {
idbFactory.deleteDatabase(dbName);
static deleteDatabase(idbFactory: IDBFactory, dbName: string): Promise<void> {
const req = idbFactory.deleteDatabase(dbName)
return requestToPromise(req)
}
async exportDatabase(): Promise<any> {

View File

@ -33,6 +33,7 @@ import {
Database,
Stores,
makeErrorDetails,
deleteTalerDatabase,
} from "@gnu-taler/taler-wallet-core";
import {
classifyTalerUri,
@ -121,6 +122,7 @@ async function dispatch(
break;
}
case "reset-db": {
await deleteTalerDatabase(indexedDB);
r = wrapResponse(await reinitWallet());
break;
}