summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations/backup
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2021-05-12 13:34:49 +0200
committerFlorian Dold <florian@dold.me>2021-05-12 13:35:04 +0200
commitdebc2254fdf1cf748a846e429e32c2e92d557080 (patch)
tree2387fbb74977b5c58786332703c8d61189214c00 /packages/taler-wallet-core/src/operations/backup
parent83b02069c931306c72c470e0285693719f65d0ca (diff)
downloadwallet-core-debc2254fdf1cf748a846e429e32c2e92d557080.tar.gz
wallet-core-debc2254fdf1cf748a846e429e32c2e92d557080.tar.bz2
wallet-core-debc2254fdf1cf748a846e429e32c2e92d557080.zip
towards backup based on add/remove set instead of clocks
Diffstat (limited to 'packages/taler-wallet-core/src/operations/backup')
-rw-r--r--packages/taler-wallet-core/src/operations/backup/export.ts7
-rw-r--r--packages/taler-wallet-core/src/operations/backup/import.ts7
-rw-r--r--packages/taler-wallet-core/src/operations/backup/index.ts4
3 files changed, 10 insertions, 8 deletions
diff --git a/packages/taler-wallet-core/src/operations/backup/export.ts b/packages/taler-wallet-core/src/operations/backup/export.ts
index 07c7b9ece..4ccaf8f42 100644
--- a/packages/taler-wallet-core/src/operations/backup/export.ts
+++ b/packages/taler-wallet-core/src/operations/backup/export.ts
@@ -118,6 +118,7 @@ export async function exportBackup(
timestamp_finish: wg.timestampFinish,
withdrawal_group_id: wg.withdrawalGroupId,
secret_seed: wg.secretSeed,
+ selected_denoms_id: wg.denomSelUid,
});
});
@@ -160,6 +161,7 @@ export async function exportBackup(
timestamp_created: tip.createdTimestamp,
timestamp_expiration: tip.tipExpiration,
tip_amount_raw: Amounts.stringify(tip.tipAmountRaw),
+ selected_denoms_uid: tip.denomSelUid,
});
});
@@ -363,6 +365,7 @@ export async function exportBackup(
nonce_priv: purch.noncePriv,
merchant_sig: purch.download.contractData.merchantSig,
total_pay_cost: Amounts.stringify(purch.totalPayCost),
+ pay_coins_uid: purch.payCoinSelectionUid,
});
});
@@ -446,13 +449,11 @@ export async function exportBackup(
const backupBlob: WalletBackupContentV1 = {
schema_id: "gnu-taler-wallet-backup-content",
schema_version: 1,
- clocks: bs.clocks,
exchanges: backupExchanges,
wallet_root_pub: bs.walletRootPub,
backup_providers: backupBackupProviders,
current_device_id: bs.deviceId,
proposals: backupProposals,
- purchase_tombstones: [],
purchases: backupPurchases,
recoup_groups: backupRecoupGroups,
refresh_groups: backupRefreshGroups,
@@ -462,13 +463,13 @@ export async function exportBackup(
trusted_exchanges: {},
intern_table: {},
error_reports: [],
+ tombstones: [],
};
// If the backup changed, we increment our clock.
let h = encodeCrock(hash(stringToBytes(canonicalJson(backupBlob))));
if (h != bs.lastBackupPlainHash) {
- backupBlob.clocks[bs.deviceId] = ++bs.clocks[bs.deviceId];
bs.lastBackupPlainHash = encodeCrock(
hash(stringToBytes(canonicalJson(backupBlob))),
);
diff --git a/packages/taler-wallet-core/src/operations/backup/import.ts b/packages/taler-wallet-core/src/operations/backup/import.ts
index e0ae379ab..931e6f92b 100644
--- a/packages/taler-wallet-core/src/operations/backup/import.ts
+++ b/packages/taler-wallet-core/src/operations/backup/import.ts
@@ -302,7 +302,9 @@ export async function importBackup(
denomPubHash,
]);
if (!existingDenom) {
- logger.info(`importing backup denomination: ${j2s(backupDenomination)}`);
+ logger.info(
+ `importing backup denomination: ${j2s(backupDenomination)}`,
+ );
await tx.put(Stores.denominations, {
denomPub: backupDenomination.denom_pub,
@@ -446,6 +448,7 @@ export async function importBackup(
timestampStart: backupWg.timestamp_created,
timestampFinish: backupWg.timestamp_finish,
withdrawalGroupId: backupWg.withdrawal_group_id,
+ denomSelUid: backupWg.selected_denoms_id,
});
}
}
@@ -695,6 +698,7 @@ export async function importBackup(
coinDepositPermissions: undefined,
totalPayCost: Amounts.parseOrThrow(backupPurchase.total_pay_cost),
refunds,
+ payCoinSelectionUid: backupPurchase.pay_coins_uid,
});
}
}
@@ -801,6 +805,7 @@ export async function importBackup(
tipAmountRaw: Amounts.parseOrThrow(backupTip.tip_amount_raw),
tipExpiration: backupTip.timestamp_expiration,
walletTipId: backupTip.wallet_tip_id,
+ denomSelUid: backupTip.selected_denoms_uid,
});
}
}
diff --git a/packages/taler-wallet-core/src/operations/backup/index.ts b/packages/taler-wallet-core/src/operations/backup/index.ts
index 49129d7de..b4c1a6c92 100644
--- a/packages/taler-wallet-core/src/operations/backup/index.ts
+++ b/packages/taler-wallet-core/src/operations/backup/index.ts
@@ -349,7 +349,6 @@ async function runBackupCycleForProvider(
}
prov.lastBackupHash = encodeCrock(currentBackupHash);
prov.lastBackupTimestamp = getTimestampNow();
- prov.lastBackupClock = backupJson.clocks[backupJson.current_device_id];
prov.lastError = undefined;
await tx.put(Stores.backupProviders, prov);
},
@@ -372,7 +371,6 @@ async function runBackupCycleForProvider(
return;
}
prov.lastBackupHash = encodeCrock(hash(backupEnc));
- prov.lastBackupClock = blob.clocks[blob.current_device_id];
prov.lastBackupTimestamp = getTimestampNow();
prov.lastError = undefined;
await tx.put(Stores.backupProviders, prov);
@@ -624,7 +622,6 @@ export async function getBackupInfo(
for (const x of providerRecords) {
providers.push({
active: x.active,
- lastRemoteClock: x.lastBackupClock,
syncProviderBaseUrl: x.baseUrl,
lastBackupTimestamp: x.lastBackupTimestamp,
paymentProposalIds: x.paymentProposalIds,
@@ -696,7 +693,6 @@ async function backupRecoveryTheirs(
for (const prov of providers) {
prov.lastBackupTimestamp = undefined;
prov.lastBackupHash = undefined;
- prov.lastBackupClock = undefined;
await tx.put(Stores.backupProviders, prov);
}
},