diff options
Diffstat (limited to 'packages/taler-wallet-core/src/operations/backup')
-rw-r--r-- | packages/taler-wallet-core/src/operations/backup/export.ts | 11 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/operations/backup/import.ts | 45 |
2 files changed, 37 insertions, 19 deletions
diff --git a/packages/taler-wallet-core/src/operations/backup/export.ts b/packages/taler-wallet-core/src/operations/backup/export.ts index fb1fbf90b..35d5e6ef7 100644 --- a/packages/taler-wallet-core/src/operations/backup/export.ts +++ b/packages/taler-wallet-core/src/operations/backup/export.ts @@ -62,6 +62,7 @@ import { AbortStatus, CoinSourceType, CoinStatus, + DenominationRecord, ProposalStatus, RefreshCoinStatus, RefundState, @@ -221,10 +222,10 @@ export async function exportBackup( backupDenoms.push({ coins: backupCoinsByDenom[denom.denomPubHash] ?? [], denom_pub: denom.denomPub, - fee_deposit: Amounts.stringify(denom.feeDeposit), - fee_refresh: Amounts.stringify(denom.feeRefresh), - fee_refund: Amounts.stringify(denom.feeRefund), - fee_withdraw: Amounts.stringify(denom.feeWithdraw), + fee_deposit: Amounts.stringify(denom.fees.feeDeposit), + fee_refresh: Amounts.stringify(denom.fees.feeRefresh), + fee_refund: Amounts.stringify(denom.fees.feeRefund), + fee_withdraw: Amounts.stringify(denom.fees.feeWithdraw), is_offered: denom.isOffered, is_revoked: denom.isRevoked, master_sig: denom.masterSig, @@ -232,7 +233,7 @@ export async function exportBackup( stamp_expire_legal: denom.stampExpireLegal, stamp_expire_withdraw: denom.stampExpireWithdraw, stamp_start: denom.stampStart, - value: Amounts.stringify(denom.value), + value: Amounts.stringify(DenominationRecord.getValue(denom)), list_issue_date: denom.listIssueDate, }); }); diff --git a/packages/taler-wallet-core/src/operations/backup/import.ts b/packages/taler-wallet-core/src/operations/backup/import.ts index 53e45918e..53dc50f3b 100644 --- a/packages/taler-wallet-core/src/operations/backup/import.ts +++ b/packages/taler-wallet-core/src/operations/backup/import.ts @@ -38,6 +38,7 @@ import { CoinSource, CoinSourceType, CoinStatus, + DenominationRecord, DenominationVerificationStatus, DenomSelectionState, OperationStatus, @@ -108,7 +109,10 @@ async function recoverPayCoinSelection( coinRecord.denomPubHash, ]); checkBackupInvariant(!!denom); - totalDepositFees = Amounts.add(totalDepositFees, denom.feeDeposit).amount; + totalDepositFees = Amounts.add( + totalDepositFees, + denom.fees.feeDeposit, + ).amount; if (!coveredExchanges.has(coinRecord.exchangeBaseUrl)) { const exchangeDetails = await getExchangeDetails( @@ -175,16 +179,19 @@ async function getDenomSelStateFromBackup( denomPubHash: string; count: number; }[] = []; - let totalCoinValue = Amounts.getZero(d0.value.currency); - let totalWithdrawCost = Amounts.getZero(d0.value.currency); + let totalCoinValue = Amounts.getZero(d0.currency); + let totalWithdrawCost = Amounts.getZero(d0.currency); for (const s of sel) { const d = await tx.denominations.get([exchangeBaseUrl, s.denom_pub_hash]); checkBackupInvariant(!!d); - totalCoinValue = Amounts.add(totalCoinValue, d.value).amount; + totalCoinValue = Amounts.add( + totalCoinValue, + DenominationRecord.getValue(d), + ).amount; totalWithdrawCost = Amounts.add( totalWithdrawCost, - d.value, - d.feeWithdraw, + DenominationRecord.getValue(d), + d.fees.feeWithdraw, ).amount; } return { @@ -352,17 +359,25 @@ export async function importBackup( `importing backup denomination: ${j2s(backupDenomination)}`, ); + const value = Amounts.parseOrThrow(backupDenomination.value); + await tx.denominations.put({ denomPub: backupDenomination.denom_pub, denomPubHash: denomPubHash, exchangeBaseUrl: backupExchangeDetails.base_url, exchangeMasterPub: backupExchangeDetails.master_public_key, - feeDeposit: Amounts.parseOrThrow(backupDenomination.fee_deposit), - feeRefresh: Amounts.parseOrThrow(backupDenomination.fee_refresh), - feeRefund: Amounts.parseOrThrow(backupDenomination.fee_refund), - feeWithdraw: Amounts.parseOrThrow( - backupDenomination.fee_withdraw, - ), + fees: { + feeDeposit: Amounts.parseOrThrow( + backupDenomination.fee_deposit, + ), + feeRefresh: Amounts.parseOrThrow( + backupDenomination.fee_refresh, + ), + feeRefund: Amounts.parseOrThrow(backupDenomination.fee_refund), + feeWithdraw: Amounts.parseOrThrow( + backupDenomination.fee_withdraw, + ), + }, isOffered: backupDenomination.is_offered, isRevoked: backupDenomination.is_revoked, masterSig: backupDenomination.master_sig, @@ -371,7 +386,9 @@ export async function importBackup( stampExpireWithdraw: backupDenomination.stamp_expire_withdraw, stampStart: backupDenomination.stamp_start, verificationStatus: DenominationVerificationStatus.VerifiedGood, - value: Amounts.parseOrThrow(backupDenomination.value), + currency: value.currency, + amountFrac: value.fraction, + amountVal: value.value, listIssueDate: backupDenomination.list_issue_date, }); } @@ -648,7 +665,7 @@ export async function importBackup( executionTime: backupRefund.execution_time, obtainedTime: backupRefund.obtained_time, refundAmount: Amounts.parseOrThrow(backupRefund.refund_amount), - refundFee: denom.feeRefund, + refundFee: denom.fees.feeRefund, rtransactionId: backupRefund.rtransaction_id, totalRefreshCostBound: Amounts.parseOrThrow( backupRefund.total_refresh_cost_bound, |