gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] 02/03: fix #5845 added run-gc on webex


From: gnunet
Subject: [taler-wallet-core] 02/03: fix #5845 added run-gc on webex
Date: Fri, 29 Apr 2022 20:49:31 +0200

This is an automated email from the git hooks/post-receive script.

sebasjm pushed a commit to branch master
in repository wallet-core.

commit 038dcbc9b7378552bd5b0548fe373dbd2867c971
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Fri Apr 29 13:16:29 2022 -0300

    fix #5845 added run-gc on webex
---
 packages/taler-wallet-core/src/db.ts               | 26 +++++++++++-----------
 .../src/wallet/DeveloperPage.tsx                   | 17 ++++++++++++--
 packages/taler-wallet-webextension/src/wxApi.ts    |  8 +++++++
 .../taler-wallet-webextension/src/wxBackend.ts     | 14 ++++++++++++
 4 files changed, 50 insertions(+), 15 deletions(-)

diff --git a/packages/taler-wallet-core/src/db.ts 
b/packages/taler-wallet-core/src/db.ts
index 0a1b40d2..e8c46c7e 100644
--- a/packages/taler-wallet-core/src/db.ts
+++ b/packages/taler-wallet-core/src/db.ts
@@ -1303,9 +1303,9 @@ export const WALLET_BACKUP_STATE_KEY = 
"walletBackupState";
  */
 export type ConfigRecord =
   | {
-      key: typeof WALLET_BACKUP_STATE_KEY;
-      value: WalletBackupConfState;
-    }
+    key: typeof WALLET_BACKUP_STATE_KEY;
+    value: WalletBackupConfState;
+  }
   | { key: "currencyDefaultsApplied"; value: boolean };
 
 export interface WalletBackupConfState {
@@ -1491,17 +1491,17 @@ export enum BackupProviderStateTag {
 
 export type BackupProviderState =
   | {
-      tag: BackupProviderStateTag.Provisional;
-    }
+    tag: BackupProviderStateTag.Provisional;
+  }
   | {
-      tag: BackupProviderStateTag.Ready;
-      nextBackupTimestamp: TalerProtocolTimestamp;
-    }
+    tag: BackupProviderStateTag.Ready;
+    nextBackupTimestamp: TalerProtocolTimestamp;
+  }
   | {
-      tag: BackupProviderStateTag.Retrying;
-      retryInfo: RetryInfo;
-      lastError?: TalerErrorDetail;
-    };
+    tag: BackupProviderStateTag.Retrying;
+    retryInfo: RetryInfo;
+    lastError?: TalerErrorDetail;
+  };
 
 export interface BackupProviderTerms {
   supportedProtocolVersion: string;
@@ -1895,7 +1895,6 @@ export function importDb(db: IDBDatabase, dump: 
DatabaseDump): Promise<any> {
   return new Promise((resolve, reject) => {
     const tx = db.transaction(Array.from(db.objectStoreNames), "readwrite");
     tx.addEventListener("complete", () => {
-      tx.commit();
       resolve(db);
     });
     for (let i = 0; i < db.objectStoreNames.length; i++) {
@@ -1908,5 +1907,6 @@ export function importDb(db: IDBDatabase, dump: 
DatabaseDump): Promise<any> {
         tx.objectStore(name).put(value);
       });
     }
+    tx.commit();
   });
 }
diff --git a/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx 
b/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx
index e371775f..829e60b4 100644
--- a/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx
@@ -36,7 +36,8 @@ export function DeveloperPage(): VNode {
   const [status, timedOut] = useDiagnostics();
 
   const listenAllEvents = Array.from<NotificationType>({ length: 1 });
-  listenAllEvents.includes = () => true; // includes every event
+  //FIXME: waiting for retry notification make a always increasing loop of 
notifications
+  listenAllEvents.includes = (e) => e !== "waiting-for-retry"; // includes 
every event
 
   const response = useAsyncAsHook(async () => {
     const op = await wxApi.getPendingOperations();
@@ -160,11 +161,22 @@ export function View({
         onClick={() =>
           confirmReset(
             i18n.str`Do you want to IRREVOCABLY DESTROY everything inside your 
wallet and LOSE ALL YOUR COINS?`,
+            wxApi.resetDb,
           )
         }
       >
         <i18n.Translate>reset</i18n.Translate>
       </button>
+      <button
+        onClick={() =>
+          confirmReset(
+            i18n.str`TESTING: This may delete all your coin, proceed with 
caution`,
+            wxApi.runGarbageCollector,
+          )
+        }
+      >
+        <i18n.Translate>run gc</i18n.Translate>
+      </button>
       <br />
       <button onClick={() => fileRef?.current?.click()}>
         <i18n.Translate>import database</i18n.Translate>
@@ -385,9 +397,10 @@ function toBase64(str: string): string {
 
 export async function confirmReset(
   confirmTheResetMessage: string,
+  cb: () => Promise<void>,
 ): Promise<void> {
   if (confirm(confirmTheResetMessage)) {
-    await wxApi.resetDb();
+    await cb();
     window.close();
   }
 }
diff --git a/packages/taler-wallet-webextension/src/wxApi.ts 
b/packages/taler-wallet-webextension/src/wxApi.ts
index da80e9bd..3079392b 100644
--- a/packages/taler-wallet-webextension/src/wxApi.ts
+++ b/packages/taler-wallet-webextension/src/wxApi.ts
@@ -140,6 +140,14 @@ export function resetDb(): Promise<void> {
   return callBackend("reset-db", {});
 }
 
+/**
+ * Reset database
+ */
+export function runGarbageCollector(): Promise<void> {
+  return callBackend("run-gc", {});
+}
+
+
 export function getFeeForDeposit(
   depositPaytoUri: string,
   amount: AmountString,
diff --git a/packages/taler-wallet-webextension/src/wxBackend.ts 
b/packages/taler-wallet-webextension/src/wxBackend.ts
index 2ac8f634..f5483e80 100644
--- a/packages/taler-wallet-webextension/src/wxBackend.ts
+++ b/packages/taler-wallet-webextension/src/wxBackend.ts
@@ -33,6 +33,8 @@ import {
 import {
   DbAccess,
   deleteTalerDatabase,
+  exportDb,
+  importDb,
   makeErrorDetail,
   OpenedPromise,
   openPromise,
@@ -129,6 +131,18 @@ async function dispatch(
       r = wrapResponse(await reinitWallet());
       break;
     }
+    case "run-gc": {
+      logger.info("gc")
+      const dump = await exportDb(currentDatabase!.idbHandle());
+      await deleteTalerDatabase(indexedDB as any);
+      logger.info("cleaned")
+      await reinitWallet();
+      logger.info("init")
+      await importDb(currentDatabase!.idbHandle(), dump)
+      logger.info("imported")
+      r = wrapResponse({ result: true });
+      break;
+    }
     case "containsHeaderListener": {
       const res = await platform.containsTalerHeaderListener();
       r = wrapResponse({ newValue: res });

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]