[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.