aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations/common.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-core/src/operations/common.ts')
-rw-r--r--packages/taler-wallet-core/src/operations/common.ts80
1 files changed, 55 insertions, 25 deletions
diff --git a/packages/taler-wallet-core/src/operations/common.ts b/packages/taler-wallet-core/src/operations/common.ts
index 7a8b78b53..e96beb5b2 100644
--- a/packages/taler-wallet-core/src/operations/common.ts
+++ b/packages/taler-wallet-core/src/operations/common.ts
@@ -30,6 +30,7 @@ import {
ExchangeEntryStatus,
ExchangeListItem,
ExchangeTosStatus,
+ ExchangeUpdateStatus,
getErrorDetailFromException,
j2s,
Logger,
@@ -47,7 +48,7 @@ import {
WalletStoresV1,
CoinRecord,
ExchangeDetailsRecord,
- ExchangeRecord,
+ ExchangeEntryRecord,
BackupProviderRecord,
DepositGroupRecord,
PeerPullPaymentIncomingRecord,
@@ -59,6 +60,8 @@ import {
RefreshGroupRecord,
RewardRecord,
WithdrawalGroupRecord,
+ ExchangeEntryDbUpdateStatus,
+ ExchangeEntryDbRecordStatus,
} from "../db.js";
import { makeErrorDetail, TalerError } from "@gnu-taler/taler-util";
import { InternalWalletState } from "../internal-wallet-state.js";
@@ -529,16 +532,16 @@ export function getExchangeTosStatus(
exchangeDetails: ExchangeDetailsRecord,
): ExchangeTosStatus {
if (!exchangeDetails.tosAccepted) {
- return ExchangeTosStatus.New;
+ return ExchangeTosStatus.Proposed;
}
if (exchangeDetails.tosAccepted?.etag == exchangeDetails.tosCurrentEtag) {
return ExchangeTosStatus.Accepted;
}
- return ExchangeTosStatus.Changed;
+ return ExchangeTosStatus.Proposed;
}
export function makeExchangeListItem(
- r: ExchangeRecord,
+ r: ExchangeEntryRecord,
exchangeDetails: ExchangeDetailsRecord | undefined,
lastError: TalerErrorDetail | undefined,
): ExchangeListItem {
@@ -547,30 +550,57 @@ export function makeExchangeListItem(
error: lastError,
}
: undefined;
- if (!exchangeDetails) {
- return {
- exchangeBaseUrl: r.baseUrl,
- currency: undefined,
- tosStatus: ExchangeTosStatus.Unknown,
- paytoUris: [],
- exchangeStatus: ExchangeEntryStatus.Unknown,
- permanent: r.permanent,
- ageRestrictionOptions: [],
- lastUpdateErrorInfo,
- };
+
+ let exchangeUpdateStatus: ExchangeUpdateStatus;
+ switch (r.updateStatus) {
+ case ExchangeEntryDbUpdateStatus.Failed:
+ exchangeUpdateStatus = ExchangeUpdateStatus.Failed;
+ break;
+ case ExchangeEntryDbUpdateStatus.Initial:
+ exchangeUpdateStatus = ExchangeUpdateStatus.Initial;
+ break;
+ case ExchangeEntryDbUpdateStatus.InitialUpdate:
+ exchangeUpdateStatus = ExchangeUpdateStatus.InitialUpdate;
+ break;
+ case ExchangeEntryDbUpdateStatus.OutdatedUpdate:
+ exchangeUpdateStatus = ExchangeUpdateStatus.OutdatedUpdate;
+ break;
+ case ExchangeEntryDbUpdateStatus.Ready:
+ exchangeUpdateStatus = ExchangeUpdateStatus.Ready;
+ break;
+ case ExchangeEntryDbUpdateStatus.ReadyUpdate:
+ exchangeUpdateStatus = ExchangeUpdateStatus.ReadyUpdate;
+ break;
+ case ExchangeEntryDbUpdateStatus.Suspended:
+ exchangeUpdateStatus = ExchangeUpdateStatus.Suspended;
+ break;
+ }
+
+ let exchangeEntryStatus: ExchangeEntryStatus;
+ switch (r.entryStatus) {
+ case ExchangeEntryDbRecordStatus.Ephemeral:
+ exchangeEntryStatus = ExchangeEntryStatus.Ephemeral;
+ break;
+ case ExchangeEntryDbRecordStatus.Preset:
+ exchangeEntryStatus = ExchangeEntryStatus.Preset;
+ break;
+ case ExchangeEntryDbRecordStatus.Used:
+ exchangeEntryStatus = ExchangeEntryStatus.Used;
+ break;
}
- let exchangeStatus;
- exchangeStatus = ExchangeEntryStatus.Ok;
+
return {
exchangeBaseUrl: r.baseUrl,
- currency: exchangeDetails.currency,
- tosStatus: getExchangeTosStatus(exchangeDetails),
- paytoUris: exchangeDetails.wireInfo.accounts.map((x) => x.payto_uri),
- exchangeStatus,
- permanent: r.permanent,
- ageRestrictionOptions: exchangeDetails.ageMask
+ currency: exchangeDetails?.currency,
+ exchangeUpdateStatus,
+ exchangeEntryStatus,
+ tosStatus: exchangeDetails
+ ? getExchangeTosStatus(exchangeDetails)
+ : ExchangeTosStatus.Pending,
+ ageRestrictionOptions: exchangeDetails?.ageMask
? AgeRestriction.getAgeGroupsFromMask(exchangeDetails.ageMask)
: [],
+ paytoUris: exchangeDetails?.wireInfo.accounts.map((x) => x.payto_uri) ?? [],
lastUpdateErrorInfo,
};
}
@@ -892,13 +922,13 @@ export namespace TaskIdentifiers {
export function forWithdrawal(wg: WithdrawalGroupRecord): TaskId {
return `${PendingTaskType.Withdraw}:${wg.withdrawalGroupId}` as TaskId;
}
- export function forExchangeUpdate(exch: ExchangeRecord): TaskId {
+ export function forExchangeUpdate(exch: ExchangeEntryRecord): TaskId {
return `${PendingTaskType.ExchangeUpdate}:${exch.baseUrl}` as TaskId;
}
export function forExchangeUpdateFromUrl(exchBaseUrl: string): TaskId {
return `${PendingTaskType.ExchangeUpdate}:${exchBaseUrl}` as TaskId;
}
- export function forExchangeCheckRefresh(exch: ExchangeRecord): TaskId {
+ export function forExchangeCheckRefresh(exch: ExchangeEntryRecord): TaskId {
return `${PendingTaskType.ExchangeCheckRefresh}:${exch.baseUrl}` as TaskId;
}
export function forTipPickup(tipRecord: RewardRecord): TaskId {