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); return new Database(mainDbHandle, Stores);
} }
export function deleteTalerDatabase(idbFactory: IDBFactory): void { export function deleteTalerDatabase(idbFactory: IDBFactory): Promise<void> {
Database.deleteDatabase(idbFactory, TALER_DB_NAME); return Database.deleteDatabase(idbFactory, TALER_DB_NAME);
} }
export enum ReserveRecordStatus { export enum ReserveRecordStatus {

View File

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

View File

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