From cc795f350a8827b97b792e09a031f950e84e426a Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 14 Jun 2021 11:45:05 +0200 Subject: [PATCH] store ToS acceptance timestamp, remove unused backup attributes --- packages/taler-util/src/backupTypes.ts | 14 +++----------- packages/taler-wallet-core/src/db.ts | 9 ++++++++- .../src/operations/backup/export.ts | 4 ++-- .../src/operations/backup/import.ts | 6 ++++-- .../taler-wallet-core/src/operations/exchanges.ts | 1 + 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/packages/taler-util/src/backupTypes.ts b/packages/taler-util/src/backupTypes.ts index dc344ee23..97fbcebcc 100644 --- a/packages/taler-util/src/backupTypes.ts +++ b/packages/taler-util/src/backupTypes.ts @@ -806,12 +806,6 @@ export interface BackupPurchase { */ refunds: BackupRefundItem[]; - /** - * Is the purchase considered defunct (either during payment - * or during abort if abort_status is set). - */ - defunct?: boolean; - /** * Abort status of the payment. */ @@ -1006,8 +1000,6 @@ export interface BackupReserve { * Groups of withdrawal operations for this reserve. Typically just one. */ withdrawal_groups: BackupWithdrawalGroup[]; - - defective?: boolean; } /** @@ -1179,12 +1171,12 @@ export interface BackupExchangeDetails { /** * ETag for last terms of service download. */ - tos_etag_last: string | undefined; + tos_accepted_etag: string | undefined; /** - * ETag for last terms of service download. + * Timestamp when the ToS has been accepted. */ - tos_etag_accepted: string | undefined; + tos_accepted_timestamp: Timestamp | undefined; } export enum BackupProposalStatus { diff --git a/packages/taler-wallet-core/src/db.ts b/packages/taler-wallet-core/src/db.ts index 349a40427..62b0e2283 100644 --- a/packages/taler-wallet-core/src/db.ts +++ b/packages/taler-wallet-core/src/db.ts @@ -570,10 +570,17 @@ export interface ExchangeDetailsRecord { termsOfServiceLastEtag: string | undefined; /** - * ETag for last terms of service download. + * ETag for last terms of service accepted. */ termsOfServiceAcceptedEtag: string | undefined; + /** + * Timestamp when the ToS was accepted. + * + * Used during backup merging. + */ + termsOfServiceAcceptedTimestamp: Timestamp | undefined; + wireInfo: WireInfo; } diff --git a/packages/taler-wallet-core/src/operations/backup/export.ts b/packages/taler-wallet-core/src/operations/backup/export.ts index 8d57ecd80..a62c26d68 100644 --- a/packages/taler-wallet-core/src/operations/backup/export.ts +++ b/packages/taler-wallet-core/src/operations/backup/export.ts @@ -311,8 +311,8 @@ export async function exportBackup( stamp_expire: x.stamp_expire, stamp_start: x.stamp_start, })), - tos_etag_accepted: ex.termsOfServiceAcceptedEtag, - tos_etag_last: ex.termsOfServiceLastEtag, + tos_accepted_etag: ex.termsOfServiceAcceptedEtag, + tos_accepted_timestamp: ex.termsOfServiceAcceptedTimestamp, denominations: backupDenominationsByExchange[ex.exchangeBaseUrl] ?? [], reserves: backupReservesByExchange[ex.exchangeBaseUrl] ?? [], diff --git a/packages/taler-wallet-core/src/operations/backup/import.ts b/packages/taler-wallet-core/src/operations/backup/import.ts index 146fd5109..b29491948 100644 --- a/packages/taler-wallet-core/src/operations/backup/import.ts +++ b/packages/taler-wallet-core/src/operations/backup/import.ts @@ -297,9 +297,11 @@ export async function importBackup( } await tx.exchangeDetails.put({ exchangeBaseUrl: backupExchangeDetails.base_url, - termsOfServiceAcceptedEtag: backupExchangeDetails.tos_etag_accepted, + termsOfServiceAcceptedEtag: backupExchangeDetails.tos_accepted_etag, termsOfServiceText: undefined, - termsOfServiceLastEtag: backupExchangeDetails.tos_etag_last, + termsOfServiceLastEtag: undefined, + termsOfServiceAcceptedTimestamp: + backupExchangeDetails.tos_accepted_timestamp, wireInfo, currency: backupExchangeDetails.currency, auditors: backupExchangeDetails.auditors.map((x) => ({ diff --git a/packages/taler-wallet-core/src/operations/exchanges.ts b/packages/taler-wallet-core/src/operations/exchanges.ts index ff85372ec..1f9a2ea6a 100644 --- a/packages/taler-wallet-core/src/operations/exchanges.ts +++ b/packages/taler-wallet-core/src/operations/exchanges.ts @@ -496,6 +496,7 @@ async function updateExchangeFromUrlImpl( termsOfServiceText: tosDownload.tosText, termsOfServiceAcceptedEtag: undefined, termsOfServiceLastEtag: tosDownload.tosEtag, + termsOfServiceAcceptedTimestamp: getTimestampNow(), }; // FIXME: only update if pointer got updated r.lastError = undefined;