gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] branch master updated: wallet-core: allow version ch


From: gnunet
Subject: [taler-wallet-core] branch master updated: wallet-core: allow version change event
Date: Wed, 30 Aug 2023 18:34:00 +0200

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

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

The following commit(s) were added to refs/heads/master by this push:
     new 8fed5b4b7 wallet-core: allow version change event
8fed5b4b7 is described below

commit 8fed5b4b7370431602c0b25f8142009e61f7b906
Author: Florian Dold <florian@dold.me>
AuthorDate: Wed Aug 30 18:33:56 2023 +0200

    wallet-core: allow version change event
---
 packages/taler-wallet-cli/src/index.ts             | 10 +++++++++
 packages/taler-wallet-core/src/db.ts               | 14 ++++++-------
 packages/taler-wallet-core/src/util/query.ts       | 12 +++++------
 packages/taler-wallet-core/src/wallet.ts           | 24 ++++++++++++----------
 .../taler-wallet-webextension/src/wxBackend.ts     |  1 -
 5 files changed, 36 insertions(+), 25 deletions(-)

diff --git a/packages/taler-wallet-cli/src/index.ts 
b/packages/taler-wallet-cli/src/index.ts
index 9652f84f3..36e7f7768 100644
--- a/packages/taler-wallet-cli/src/index.ts
+++ b/packages/taler-wallet-cli/src/index.ts
@@ -883,6 +883,16 @@ backupCli.subcommand("exportDb", "export-db").action(async 
(args) => {
   });
 });
 
+backupCli.subcommand("storeBackup", "store-backup").action(async (args) => {
+  await withWallet(args, async (wallet) => {
+    const resp = await wallet.client.call(
+      WalletApiOperation.CreateStoredBackup,
+      {},
+    );
+    console.log(JSON.stringify(resp, undefined, 2));
+  });
+});
+
 backupCli.subcommand("importDb", "import-db").action(async (args) => {
   await withWallet(args, async (wallet) => {
     const dumpRaw = await read(process.stdin);
diff --git a/packages/taler-wallet-core/src/db.ts 
b/packages/taler-wallet-core/src/db.ts
index 1255e8c71..a642c0203 100644
--- a/packages/taler-wallet-core/src/db.ts
+++ b/packages/taler-wallet-core/src/db.ts
@@ -114,6 +114,11 @@ export const TALER_WALLET_MAIN_DB_NAME = 
"taler-wallet-main-v9";
  */
 export const TALER_WALLET_META_DB_NAME = "taler-wallet-meta";
 
+/**
+ * Stored backups, mainly created when manually importing a backup.
+ */
+export const TALER_WALLET_STORED_BACKUPS_DB_NAME = 
"taler-wallet-stored-backups";
+
 export const CURRENT_DB_CONFIG_KEY = "currentMainDbName";
 
 /**
@@ -2773,15 +2778,10 @@ export interface StoredBackupMeta {
   name: string;
 }
 
-export interface StoredBackupData {
-  name: string;
-  data: any;
-}
-
 export const StoredBackupStores = {
   backupMeta: describeStore(
     "backupMeta",
-    describeContents<MetaConfigRecord>({ keyPath: "name" }),
+    describeContents<StoredBackupMeta>({ keyPath: "name" }),
     {},
   ),
   backupData: describeStore("backupData", describeContents<any>({}), {}),
@@ -3250,7 +3250,7 @@ export async function openStoredBackupsDatabase(
 ): Promise<DbAccess<typeof StoredBackupStores>> {
   const backupsDbHandle = await openDatabase(
     idbFactory,
-    TALER_WALLET_META_DB_NAME,
+    TALER_WALLET_STORED_BACKUPS_DB_NAME,
     1,
     () => {},
     onStoredBackupsDbUpgradeNeeded,
diff --git a/packages/taler-wallet-core/src/util/query.ts 
b/packages/taler-wallet-core/src/util/query.ts
index eb2bddec1..7697ed3db 100644
--- a/packages/taler-wallet-core/src/util/query.ts
+++ b/packages/taler-wallet-core/src/util/query.ts
@@ -376,8 +376,8 @@ export interface InsertResponse {
 export interface StoreReadWriteAccessor<RecordType, IndexMap> {
   get(key: IDBValidKey): Promise<RecordType | undefined>;
   iter(query?: IDBValidKey): ResultStream<RecordType>;
-  put(r: RecordType): Promise<InsertResponse>;
-  add(r: RecordType): Promise<InsertResponse>;
+  put(r: RecordType, key?: IDBValidKey): Promise<InsertResponse>;
+  add(r: RecordType, key?: IDBValidKey): Promise<InsertResponse>;
   delete(key: IDBValidKey): Promise<void>;
   indexes: GetIndexReadWriteAccess<RecordType, IndexMap>;
 }
@@ -652,15 +652,15 @@ function makeWriteContext(
         const req = tx.objectStore(storeName).openCursor(query);
         return new ResultStream<any>(req);
       },
-      async add(r) {
-        const req = tx.objectStore(storeName).add(r);
+      async add(r, k) {
+        const req = tx.objectStore(storeName).add(r, k);
         const key = await requestToPromise(req);
         return {
           key: key,
         };
       },
-      async put(r) {
-        const req = tx.objectStore(storeName).put(r);
+      async put(r, k) {
+        const req = tx.objectStore(storeName).put(r, k);
         const key = await requestToPromise(req);
         return {
           key: key,
diff --git a/packages/taler-wallet-core/src/wallet.ts 
b/packages/taler-wallet-core/src/wallet.ts
index 283539a08..626409dd6 100644
--- a/packages/taler-wallet-core/src/wallet.ts
+++ b/packages/taler-wallet-core/src/wallet.ts
@@ -343,9 +343,8 @@ async function callOperationHandler(
       return await processRecoupGroup(ws, pending.recoupGroupId);
     case PendingTaskType.ExchangeCheckRefresh:
       return await autoRefresh(ws, pending.exchangeBaseUrl);
-    case PendingTaskType.Deposit: {
+    case PendingTaskType.Deposit:
       return await processDepositGroup(ws, pending.depositGroupId);
-    }
     case PendingTaskType.Backup:
       return await processBackupForProvider(ws, pending.backupProviderBaseUrl);
     case PendingTaskType.PeerPushDebit:
@@ -1031,9 +1030,15 @@ async function createStoredBackup(
   const backup = await exportDb(ws.idb);
   const backupsDb = await openStoredBackupsDatabase(ws.idb);
   const name = `backup-${new Date().getTime()}`;
-  backupsDb.mktxAll().runReadWrite(async (tx) => {});
-
-  throw Error("not implemented");
+  await backupsDb.mktxAll().runReadWrite(async (tx) => {
+    await tx.backupMeta.add({
+      name,
+    });
+    await tx.backupData.add(backup, name);
+  });
+  return {
+    name,
+  };
 }
 
 /**
@@ -1634,7 +1639,7 @@ export function getVersion(ws: InternalWalletState): 
WalletCoreVersion {
 /**
  * Handle a request to the wallet-core API.
  */
-export async function handleCoreApiRequest(
+async function handleCoreApiRequest(
   ws: InternalWalletState,
   operation: string,
   id: string,
@@ -1849,11 +1854,8 @@ class InternalWalletStateImpl implements 
InternalWalletState {
     if (this._db) {
       return;
     }
-    const myVersionChange = (): Promise<void> => {
-      logger.error("version change requested, should not happen");
-      throw Error(
-        "BUG: wallet DB version change event can't happen with memory IDB",
-      );
+    const myVersionChange = async (): Promise<void> => {
+      logger.info("version change requested for Taler DB");
     };
     const myDb = await openTalerDatabase(this.idb, myVersionChange);
     this._db = myDb;
diff --git a/packages/taler-wallet-webextension/src/wxBackend.ts 
b/packages/taler-wallet-webextension/src/wxBackend.ts
index b7484164d..e7385abe5 100644
--- a/packages/taler-wallet-webextension/src/wxBackend.ts
+++ b/packages/taler-wallet-webextension/src/wxBackend.ts
@@ -50,7 +50,6 @@ import {
   exportDb,
   importDb,
   openPromise,
-  openTalerDatabase,
 } from "@gnu-taler/taler-wallet-core";
 import {
   MessageFromBackend,

-- 
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]