summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2024-02-19 18:42:33 +0100
committerFlorian Dold <florian@dold.me>2024-02-19 18:42:33 +0100
commiteb1500e517d475aad22cfe02c8a5c5c6acefe00a (patch)
tree4572e0f8437fae4de6d6d7dade2c874af95769f2 /packages
parente888d7f292f68a58fc4b56771fb8a38219d53b86 (diff)
downloadwallet-core-eb1500e517d475aad22cfe02c8a5c5c6acefe00a.tar.gz
wallet-core-eb1500e517d475aad22cfe02c8a5c5c6acefe00a.tar.bz2
wallet-core-eb1500e517d475aad22cfe02c8a5c5c6acefe00a.zip
get rid of deprecated/unused types
Diffstat (limited to 'packages')
-rw-r--r--packages/taler-wallet-core/src/common.ts28
-rw-r--r--packages/taler-wallet-core/src/deposits.ts26
-rw-r--r--packages/taler-wallet-core/src/exchanges.ts26
-rw-r--r--packages/taler-wallet-core/src/index.ts2
-rw-r--r--packages/taler-wallet-core/src/pay-merchant.ts4
-rw-r--r--packages/taler-wallet-core/src/pay-peer-pull-credit.ts26
-rw-r--r--packages/taler-wallet-core/src/pay-peer-pull-debit.ts4
-rw-r--r--packages/taler-wallet-core/src/pay-peer-push-credit.ts24
-rw-r--r--packages/taler-wallet-core/src/pay-peer-push-debit.ts23
-rw-r--r--packages/taler-wallet-core/src/pending-types.ts242
-rw-r--r--packages/taler-wallet-core/src/recoup.ts2
-rw-r--r--packages/taler-wallet-core/src/refresh.ts30
-rw-r--r--packages/taler-wallet-core/src/reward.ts20
-rw-r--r--packages/taler-wallet-core/src/shepherd.ts3
-rw-r--r--packages/taler-wallet-core/src/transactions.ts35
-rw-r--r--packages/taler-wallet-core/src/wallet-api-types.ts5
-rw-r--r--packages/taler-wallet-core/src/wallet.ts13
-rw-r--r--packages/taler-wallet-core/src/withdraw.ts47
-rw-r--r--packages/taler-wallet-webextension/src/wallet/DeveloperPage.stories.tsx7
-rw-r--r--packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx187
20 files changed, 268 insertions, 486 deletions
diff --git a/packages/taler-wallet-core/src/common.ts b/packages/taler-wallet-core/src/common.ts
index ae1e17ffb..9d7f2e763 100644
--- a/packages/taler-wallet-core/src/common.ts
+++ b/packages/taler-wallet-core/src/common.ts
@@ -58,10 +58,9 @@ import {
timestampPreciseToDb,
} from "./db.js";
import { InternalWalletState } from "./internal-wallet-state.js";
-import { PendingTaskType, TaskId } from "./pending-types.js";
+import { createRefreshGroup } from "./refresh.js";
import { assertUnreachable } from "./util/assertUnreachable.js";
import { checkDbInvariant, checkLogicInvariant } from "./util/invariants.js";
-import { createRefreshGroup } from "./refresh.js";
const logger = new Logger("operations/common.ts");
@@ -691,3 +690,28 @@ export interface TransactionContext {
failTransaction(): Promise<void>;
deleteTransaction(): Promise<void>;
}
+
+/**
+ * Type and schema definitions for pending tasks in the wallet.
+ *
+ * These are only used internally, and are not part of the stable public
+ * interface to the wallet.
+ */
+
+export enum PendingTaskType {
+ ExchangeUpdate = "exchange-update",
+ Purchase = "purchase",
+ Refresh = "refresh",
+ Recoup = "recoup",
+ RewardPickup = "reward-pickup",
+ Withdraw = "withdraw",
+ Deposit = "deposit",
+ Backup = "backup",
+ PeerPushDebit = "peer-push-debit",
+ PeerPullCredit = "peer-pull-credit",
+ PeerPushCredit = "peer-push-credit",
+ PeerPullDebit = "peer-pull-debit",
+}
+
+declare const __taskId: unique symbol;
+export type TaskId = string & { [__taskId]: true };
diff --git a/packages/taler-wallet-core/src/deposits.ts b/packages/taler-wallet-core/src/deposits.ts
index 94e7f01ac..b6cfa7aae 100644
--- a/packages/taler-wallet-core/src/deposits.ts
+++ b/packages/taler-wallet-core/src/deposits.ts
@@ -69,14 +69,22 @@ import {
stringToBytes,
} from "@gnu-taler/taler-util";
import { readSuccessResponseJsonOrThrow } from "@gnu-taler/taler-util/http";
+import {
+ PendingTaskType,
+ TaskId,
+ TaskRunResult,
+ TombstoneTag,
+ TransactionContext,
+ constructTaskIdentifier,
+ spendCoins,
+} from "./common.js";
import { DepositElementStatus, DepositGroupRecord } from "./db.js";
+import { getExchangeWireDetailsInTx } from "./exchanges.js";
import {
DepositOperationStatus,
DepositTrackingInfo,
KycPendingInfo,
- PendingTaskType,
RefreshOperationStatus,
- TaskId,
createRefreshGroup,
getCandidateWithdrawalDenomsTx,
getTotalRefreshCost,
@@ -84,17 +92,6 @@ import {
timestampProtocolToDb,
} from "./index.js";
import { InternalWalletState } from "./internal-wallet-state.js";
-import { assertUnreachable } from "./util/assertUnreachable.js";
-import { selectPayCoinsNew } from "./util/coinSelection.js";
-import { checkDbInvariant, checkLogicInvariant } from "./util/invariants.js";
-import {
- TaskRunResult,
- TombstoneTag,
- TransactionContext,
- constructTaskIdentifier,
- spendCoins,
-} from "./common.js";
-import { getExchangeWireDetailsInTx } from "./exchanges.js";
import {
extractContractData,
generateDepositPermissions,
@@ -105,6 +102,9 @@ import {
notifyTransition,
parseTransactionIdentifier,
} from "./transactions.js";
+import { assertUnreachable } from "./util/assertUnreachable.js";
+import { selectPayCoinsNew } from "./util/coinSelection.js";
+import { checkDbInvariant, checkLogicInvariant } from "./util/invariants.js";
/**
* Logger.
diff --git a/packages/taler-wallet-core/src/exchanges.ts b/packages/taler-wallet-core/src/exchanges.ts
index 4e1651ae0..0f080b871 100644
--- a/packages/taler-wallet-core/src/exchanges.ts
+++ b/packages/taler-wallet-core/src/exchanges.ts
@@ -89,6 +89,18 @@ import {
readSuccessResponseTextOrThrow,
} from "@gnu-taler/taler-util/http";
import {
+ PendingTaskType,
+ TaskIdentifiers,
+ TaskRunResult,
+ TaskRunResultType,
+ constructTaskIdentifier,
+ getAutoRefreshExecuteThreshold,
+ getExchangeEntryStatusFromRecord,
+ getExchangeState,
+ getExchangeTosStatusFromRecord,
+ getExchangeUpdateStatusFromRecord,
+} from "./common.js";
+import {
DenominationRecord,
DenominationVerificationStatus,
ExchangeDetailsRecord,
@@ -98,7 +110,6 @@ import {
import {
ExchangeEntryDbRecordStatus,
ExchangeEntryDbUpdateStatus,
- PendingTaskType,
WalletDbReadOnlyTransaction,
WalletDbReadWriteTransaction,
createRefreshGroup,
@@ -114,20 +125,9 @@ import {
timestampProtocolToDb,
} from "./index.js";
import { InternalWalletState } from "./internal-wallet-state.js";
-import { checkDbInvariant } from "./util/invariants.js";
import { DbReadOnlyTransaction } from "./query.js";
+import { checkDbInvariant } from "./util/invariants.js";
import { WALLET_EXCHANGE_PROTOCOL_VERSION } from "./versions.js";
-import {
- TaskIdentifiers,
- TaskRunResult,
- TaskRunResultType,
- constructTaskIdentifier,
- getAutoRefreshExecuteThreshold,
- getExchangeEntryStatusFromRecord,
- getExchangeState,
- getExchangeTosStatusFromRecord,
- getExchangeUpdateStatusFromRecord,
-} from "./common.js";
const logger = new Logger("exchanges.ts");
diff --git a/packages/taler-wallet-core/src/index.ts b/packages/taler-wallet-core/src/index.ts
index 280fc9147..2b619be69 100644
--- a/packages/taler-wallet-core/src/index.ts
+++ b/packages/taler-wallet-core/src/index.ts
@@ -33,8 +33,6 @@ export {
} from "./crypto/workers/crypto-dispatcher.js";
export type { CryptoWorker } from "./crypto/workers/cryptoWorkerInterface.js";
-export * from "./pending-types.js";
-
export { InternalWalletState } from "./internal-wallet-state.js";
export * from "./wallet-api-types.js";
export * from "./wallet.js";
diff --git a/packages/taler-wallet-core/src/pay-merchant.ts b/packages/taler-wallet-core/src/pay-merchant.ts
index 0bd851464..325bc24a8 100644
--- a/packages/taler-wallet-core/src/pay-merchant.ts
+++ b/packages/taler-wallet-core/src/pay-merchant.ts
@@ -98,7 +98,9 @@ import {
import {
constructTaskIdentifier,
DbRetryInfo,
+ PendingTaskType,
spendCoins,
+ TaskId,
TaskIdentifiers,
TaskRunResult,
TaskRunResultType,
@@ -117,12 +119,10 @@ import {
} from "./db.js";
import {
getCandidateWithdrawalDenomsTx,
- PendingTaskType,
RefundGroupRecord,
RefundGroupStatus,
RefundItemRecord,
RefundItemStatus,
- TaskId,
timestampPreciseToDb,
timestampProtocolFromDb,
timestampProtocolToDb,
diff --git a/packages/taler-wallet-core/src/pay-peer-pull-credit.ts b/packages/taler-wallet-core/src/pay-peer-pull-credit.ts
index 124496d02..03bc5a4b9 100644
--- a/packages/taler-wallet-core/src/pay-peer-pull-credit.ts
+++ b/packages/taler-wallet-core/src/pay-peer-pull-credit.ts
@@ -51,6 +51,15 @@ import {
} from "@gnu-taler/taler-util";
import { readSuccessResponseJsonOrThrow } from "@gnu-taler/taler-util/http";
import {
+ PendingTaskType,
+ TaskId,
+ TaskRunResult,
+ TaskRunResultType,
+ TombstoneTag,
+ TransactionContext,
+ constructTaskIdentifier,
+} from "./common.js";
+import {
KycPendingInfo,
KycUserType,
PeerPullCreditRecord,
@@ -63,16 +72,6 @@ import {
timestampPreciseToDb,
} from "./index.js";
import { InternalWalletState } from "./internal-wallet-state.js";
-import { PendingTaskType, TaskId } from "./pending-types.js";
-import { assertUnreachable } from "./util/assertUnreachable.js";
-import { checkDbInvariant } from "./util/invariants.js";
-import {
- TaskRunResult,
- TaskRunResultType,
- TombstoneTag,
- TransactionContext,
- constructTaskIdentifier,
-} from "./common.js";
import {
codecForExchangePurseStatus,
getMergeReserveInfo,
@@ -81,6 +80,8 @@ import {
constructTransactionIdentifier,
notifyTransition,
} from "./transactions.js";
+import { assertUnreachable } from "./util/assertUnreachable.js";
+import { checkDbInvariant } from "./util/invariants.js";
import {
getExchangeWithdrawalInfo,
internalCreateWithdrawalGroup,
@@ -480,11 +481,6 @@ async function longpollKycStatus(
tag: TransactionType.PeerPullCredit,
pursePub,
});
- const retryTag = constructTaskIdentifier({
- tag: PendingTaskType.PeerPullCredit,
- pursePub,
- });
-
const url = new URL(
`kyc-check/${kycInfo.requirementRow}/${kycInfo.paytoHash}/${userType}`,
exchangeUrl,
diff --git a/packages/taler-wallet-core/src/pay-peer-pull-debit.ts b/packages/taler-wallet-core/src/pay-peer-pull-debit.ts
index 62472c7f8..1d6cb3d18 100644
--- a/packages/taler-wallet-core/src/pay-peer-pull-debit.ts
+++ b/packages/taler-wallet-core/src/pay-peer-pull-debit.ts
@@ -64,6 +64,8 @@ import {
readTalerErrorResponse,
} from "@gnu-taler/taler-util/http";
import {
+ PendingTaskType,
+ TaskId,
TaskRunResult,
TaskRunResultType,
TransactionContext,
@@ -76,10 +78,8 @@ import {
InternalWalletState,
PeerPullDebitRecordStatus,
PeerPullPaymentIncomingRecord,
- PendingTaskType,
RefreshOperationStatus,
StoreNames,
- TaskId,
WalletStoresV1,
createRefreshGroup,
timestampPreciseToDb,
diff --git a/packages/taler-wallet-core/src/pay-peer-push-credit.ts b/packages/taler-wallet-core/src/pay-peer-push-credit.ts
index 937ff7ff4..0795b0c5c 100644
--- a/packages/taler-wallet-core/src/pay-peer-push-credit.ts
+++ b/packages/taler-wallet-core/src/pay-peer-push-credit.ts
@@ -52,20 +52,8 @@ import {
} from "@gnu-taler/taler-util";
import { readSuccessResponseJsonOrThrow } from "@gnu-taler/taler-util/http";
import {
- InternalWalletState,
- KycPendingInfo,
- KycUserType,
- PeerPushCreditStatus,
- PeerPushPaymentIncomingRecord,
PendingTaskType,
TaskId,
- WithdrawalGroupStatus,
- WithdrawalRecordType,
- timestampPreciseToDb,
-} from "./index.js";
-import { assertUnreachable } from "./util/assertUnreachable.js";
-import { checkDbInvariant } from "./util/invariants.js";
-import {
TaskRunResult,
TaskRunResultType,
TombstoneTag,
@@ -74,6 +62,16 @@ import {
} from "./common.js";
import { fetchFreshExchange } from "./exchanges.js";
import {
+ InternalWalletState,
+ KycPendingInfo,
+ KycUserType,
+ PeerPushCreditStatus,
+ PeerPushPaymentIncomingRecord,
+ WithdrawalGroupStatus,
+ WithdrawalRecordType,
+ timestampPreciseToDb,
+} from "./index.js";
+import {
codecForExchangePurseStatus,
getMergeReserveInfo,
} from "./pay-peer-common.js";
@@ -83,6 +81,8 @@ import {
notifyTransition,
parseTransactionIdentifier,
} from "./transactions.js";
+import { assertUnreachable } from "./util/assertUnreachable.js";
+import { checkDbInvariant } from "./util/invariants.js";
import {
PerformCreateWithdrawalGroupResult,
getExchangeWithdrawalInfo,
diff --git a/packages/taler-wallet-core/src/pay-peer-push-debit.ts b/packages/taler-wallet-core/src/pay-peer-push-debit.ts
index 608434c9a..ec1a37a31 100644
--- a/packages/taler-wallet-core/src/pay-peer-push-debit.ts
+++ b/packages/taler-wallet-core/src/pay-peer-push-debit.ts
@@ -47,6 +47,15 @@ import {
readSuccessResponseJsonOrThrow,
readTalerErrorResponse,
} from "@gnu-taler/taler-util/http";
+import {
+ PendingTaskType,
+ TaskId,
+ TaskRunResult,
+ TaskRunResultType,
+ TransactionContext,
+ constructTaskIdentifier,
+ spendCoins,
+} from "./common.js";
import { EncryptContractRequest } from "./crypto/cryptoTypes.js";
import {
PeerPushDebitRecord,
@@ -58,17 +67,6 @@ import {
timestampProtocolToDb,
} from "./index.js";
import { InternalWalletState } from "./internal-wallet-state.js";
-import { PendingTaskType, TaskId } from "./pending-types.js";
-import { assertUnreachable } from "./util/assertUnreachable.js";
-import { PeerCoinRepair, selectPeerCoins } from "./util/coinSelection.js";
-import { checkLogicInvariant } from "./util/invariants.js";
-import {
- TaskRunResult,
- TaskRunResultType,
- TransactionContext,
- constructTaskIdentifier,
- spendCoins,
-} from "./common.js";
import {
codecForExchangePurseStatus,
getTotalPeerPaymentCost,
@@ -78,6 +76,9 @@ import {
constructTransactionIdentifier,
notifyTransition,
} from "./transactions.js";
+import { assertUnreachable } from "./util/assertUnreachable.js";
+import { PeerCoinRepair, selectPeerCoins } from "./util/coinSelection.js";
+import { checkLogicInvariant } from "./util/invariants.js";
const logger = new Logger("pay-peer-push-debit.ts");
diff --git a/packages/taler-wallet-core/src/pending-types.ts b/packages/taler-wallet-core/src/pending-types.ts
deleted file mode 100644
index 1b3fa35d8..000000000
--- a/packages/taler-wallet-core/src/pending-types.ts
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- This file is part of GNU Taler
- (C) 2019 GNUnet e.V.
-
- GNU Taler is free software; you can redistribute it and/or modify it under the
- terms of the GNU General Public License as published by the Free Software
- Foundation; either version 3, or (at your option) any later version.
-
- GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along with
- GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
- */
-
-/**
- * Type and schema definitions for pending tasks in the wallet.
- *
- * These are only used internally, and are not part of the stable public
- * interface to the wallet.
- */
-
-/**
- * Imports.
- */
-import { TalerErrorDetail, AbsoluteTime } from "@gnu-taler/taler-util";
-import { DbRetryInfo } from "./common.js";
-
-export enum PendingTaskType {
- ExchangeUpdate = "exchange-update",
- Purchase = "purchase",
- Refresh = "refresh",
- Recoup = "recoup",
- RewardPickup = "reward-pickup",
- Withdraw = "withdraw",
- Deposit = "deposit",
- Backup = "backup",
- PeerPushDebit = "peer-push-debit",
- PeerPullCredit = "peer-pull-credit",
- PeerPushCredit = "peer-push-credit",
- PeerPullDebit = "peer-pull-debit",
-}
-
-/**
- * Information about a pending operation.
- */
-export type PendingTaskInfo = PendingTaskInfoCommon &
- (
- | PendingExchangeUpdateTask
- | PendingPurchaseTask
- | PendingRefreshTask
- | PendingTipPickupTask
- | PendingWithdrawTask
- | PendingRecoupTask
- | PendingDepositTask
- | PendingBackupTask
- | PendingPeerPushInitiationTask
- | PendingPeerPullInitiationTask
- | PendingPeerPullDebitTask
- | PendingPeerPushCreditTask
- );
-
-export interface PendingBackupTask {
- type: PendingTaskType.Backup;
- backupProviderBaseUrl: string;
- lastError: TalerErrorDetail | undefined;
-}
-
-/**
- * The wallet is currently updating information about an exchange.
- */
-export interface PendingExchangeUpdateTask {
- type: PendingTaskType.ExchangeUpdate;
- exchangeBaseUrl: string;
- lastError: TalerErrorDetail | undefined;
-}
-
-/**
- * The wallet wants to send a peer push payment.
- */
-export interface PendingPeerPushInitiationTask {
- type: PendingTaskType.PeerPushDebit;
- pursePub: string;
-}
-
-/**
- * The wallet wants to send a peer pull payment.
- */
-export interface PendingPeerPullInitiationTask {
- type: PendingTaskType.PeerPullCredit;
- pursePub: string;
-}
-
-/**
- * The wallet wants to send a peer pull payment.
- */
-export interface PendingPeerPullDebitTask {
- type: PendingTaskType.PeerPullDebit;
- peerPullDebitId: string;
-}
-
-/**
- */
-export interface PendingPeerPushCreditTask {
- type: PendingTaskType.PeerPushCredit;
- peerPushCreditId: string;
-}
-
-
-export enum ReserveType {
- /**
- * Manually created.
- */
- Manual = "manual",
- /**
- * Withdrawn from a bank that has "tight" Taler integration
- */
- TalerBankWithdraw = "taler-bank-withdraw",
-}
-
-/**
- * Status of an ongoing withdrawal operation.
- */
-export interface PendingRefreshTask {
- type: PendingTaskType.Refresh;
- lastError?: TalerErrorDetail;
- refreshGroupId: string;
- finishedPerCoin: boolean[];
- retryInfo?: DbRetryInfo;
-}
-
-/**
- * The wallet is picking up a tip that the user has accepted.
- */
-export interface PendingTipPickupTask {
- type: PendingTaskType.RewardPickup;
- tipId: string;
- merchantBaseUrl: string;
- merchantTipId: string;
-}
-
-/**
- * A purchase needs to be processed (i.e. for download / payment / refund).
- */
-export interface PendingPurchaseTask {
- type: PendingTaskType.Purchase;
- proposalId: string;
- retryInfo?: DbRetryInfo;
- /**
- * Status of the payment as string, used only for debugging.
- */
- statusStr: string;
- lastError: TalerErrorDetail | undefined;
-}
-
-export interface PendingRecoupTask {
- type: PendingTaskType.Recoup;
- recoupGroupId: string;
- retryInfo?: DbRetryInfo;
- lastError: TalerErrorDetail | undefined;
-}
-
-/**
- * Status of an ongoing withdrawal operation.
- */
-export interface PendingWithdrawTask {
- type: PendingTaskType.Withdraw;
- lastError: TalerErrorDetail | undefined;
- retryInfo?: DbRetryInfo;
- withdrawalGroupId: string;
-}
-
-/**
- * Status of an ongoing deposit operation.
- */
-export interface PendingDepositTask {
- type: PendingTaskType.Deposit;
- lastError: TalerErrorDetail | undefined;
- retryInfo: DbRetryInfo | undefined;
- depositGroupId: string;
-}
-
-declare const __taskId: unique symbol;
-export type TaskId = string & { [__taskId]: true };
-
-/**
- * Fields that are present in every pending operation.
- */
-export interface PendingTaskInfoCommon {
- /**
- * Type of the pending operation.
- */
- type: PendingTaskType;
-
- /**
- * Unique identifier for the pending task.
- */
- id: TaskId;
-
- /**
- * Set to true if the operation indicates that something is really in progress,
- * as opposed to some regular scheduled operation that can be tried later.
- */
- givesLifeness: boolean;
-
- /**
- * Operation is active and waiting for a longpoll result.
- */
- isLongpolling: boolean;
-
- /**
- * Operation is waiting to be executed.
- */
- isDue: boolean;
-
- /**
- * Timestamp when the pending operation should be executed next.
- */
- timestampDue: AbsoluteTime;
-
- /**
- * Retry info. Currently used to stop the wallet after any operation
- * exceeds a number of retries.
- */
- retryInfo?: DbRetryInfo;
-
- /**
- * Internal operation status for debugging.
- */
- internalOperationStatus?: string;
-}
-
-/**
- * Response returned from the pending operations API.
- */
-export interface PendingOperationsResponse {
- /**
- * List of pending operations.
- */
- pendingOperations: PendingTaskInfo[];
-}
diff --git a/packages/taler-wallet-core/src/recoup.ts b/packages/taler-wallet-core/src/recoup.ts
index 02aa1e167..8e994484c 100644
--- a/packages/taler-wallet-core/src/recoup.ts
+++ b/packages/taler-wallet-core/src/recoup.ts
@@ -41,6 +41,7 @@ import {
} from "@gnu-taler/taler-util";
import { readSuccessResponseJsonOrThrow } from "@gnu-taler/taler-util/http";
import {
+ PendingTaskType,
TaskRunResult,
TransactionContext,
constructTaskIdentifier,
@@ -58,7 +59,6 @@ import {
timestampPreciseToDb,
} from "./db.js";
import { InternalWalletState } from "./internal-wallet-state.js";
-import { PendingTaskType } from "./pending-types.js";
import { createRefreshGroup } from "./refresh.js";
import { constructTransactionIdentifier } from "./transactions.js";
import { checkDbInvariant } from "./util/invariants.js";
diff --git a/packages/taler-wallet-core/src/refresh.ts b/packages/taler-wallet-core/src/refresh.ts
index ea4190364..f139208be 100644
--- a/packages/taler-wallet-core/src/refresh.ts
+++ b/packages/taler-wallet-core/src/refresh.ts
@@ -59,6 +59,17 @@ import {
readSuccessResponseJsonOrThrow,
readUnexpectedResponseDetails,
} from "@gnu-taler/taler-util/http";
+import {
+ constructTaskIdentifier,
+ makeCoinAvailable,
+ makeCoinsVisible,
+ PendingTaskType,
+ TaskId,
+ TaskRunResult,
+ TaskRunResultType,
+ TombstoneTag,
+ TransactionContext,
+} from "./common.js";
import { TalerCryptoInterface } from "./crypto/cryptoImplementation.js";
import {
DerivedRefreshSession,
@@ -73,12 +84,11 @@ import {
RefreshGroupRecord,
RefreshOperationStatus,
} from "./db.js";
+import { fetchFreshExchange } from "./exchanges.js";
import {
getCandidateWithdrawalDenomsTx,
- PendingTaskType,
RefreshGroupPerExchangeInfo,
RefreshSessionRecord,
- TaskId,
timestampPreciseToDb,
WalletDbReadOnlyTransaction,
WalletDbReadWriteTransaction,
@@ -87,23 +97,13 @@ import {
EXCHANGE_COINS_LOCK,
InternalWalletState,
} from "./internal-wallet-state.js";
-import { assertUnreachable } from "./util/assertUnreachable.js";
-import { selectWithdrawalDenominations } from "./util/coinSelection.js";
-import { checkDbInvariant } from "./util/invariants.js";
-import {
- constructTaskIdentifier,
- makeCoinAvailable,
- makeCoinsVisible,
- TaskRunResult,
- TaskRunResultType,
- TombstoneTag,
- TransactionContext,
-} from "./common.js";
-import { fetchFreshExchange } from "./exchanges.js";
import {
constructTransactionIdentifier,
notifyTransition,
} from "./transactions.js";
+import { assertUnreachable } from "./util/assertUnreachable.js";
+import { selectWithdrawalDenominations } from "./util/coinSelection.js";
+import { checkDbInvariant } from "./util/invariants.js";
const logger = new Logger("refresh.ts");
diff --git a/packages/taler-wallet-core/src/reward.ts b/packages/taler-wallet-core/src/reward.ts
index da43e65b0..4ef4d7509 100644
--- a/packages/taler-wallet-core/src/reward.ts
+++ b/packages/taler-wallet-core/src/reward.ts
@@ -28,26 +28,26 @@ import {
TransactionState,
TransactionType,
} from "@gnu-taler/taler-util";
-import { RewardRecord, RewardRecordStatus } from "./db.js";
-import { InternalWalletState } from "./internal-wallet-state.js";
-import { PendingTaskType } from "./pending-types.js";
-import { assertUnreachable } from "./util/assertUnreachable.js";
import {
+ PendingTaskType,
TaskRunResult,
TombstoneTag,
TransactionContext,
constructTaskIdentifier,
} from "./common.js";
+import { RewardRecord, RewardRecordStatus } from "./db.js";
+import { InternalWalletState } from "./internal-wallet-state.js";
import {
constructTransactionIdentifier,
notifyTransition,
} from "./transactions.js";
+import { assertUnreachable } from "./util/assertUnreachable.js";
const logger = new Logger("operations/tip.ts");
export class RewardTransactionContext implements TransactionContext {
public transactionId: string;
- public retryTag: string;
+ public taskId: string;
constructor(
public ws: InternalWalletState,
@@ -57,7 +57,7 @@ export class RewardTransactionContext implements TransactionContext {
tag: TransactionType.Reward,
walletRewardId,
});
- this.retryTag = constructTaskIdentifier({
+ this.taskId = constructTaskIdentifier({
tag: PendingTaskType.RewardPickup,
walletRewardId,
});
@@ -77,7 +77,7 @@ export class RewardTransactionContext implements TransactionContext {
}
async suspendTransaction(): Promise<void> {
- const { ws, walletRewardId, transactionId, retryTag } = this;
+ const { ws, walletRewardId, transactionId, taskId: retryTag } = this;
const transitionInfo = await ws.db.runReadWriteTx(
["rewards"],
async (tx) => {
@@ -118,7 +118,7 @@ export class RewardTransactionContext implements TransactionContext {
}
async abortTransaction(): Promise<void> {
- const { ws, walletRewardId, transactionId, retryTag } = this;
+ const { ws, walletRewardId, transactionId, taskId: retryTag } = this;
const transitionInfo = await ws.db.runReadWriteTx(
["rewards"],
async (tx) => {
@@ -158,7 +158,7 @@ export class RewardTransactionContext implements TransactionContext {
}
async resumeTransaction(): Promise<void> {
- const { ws, walletRewardId, transactionId, retryTag } = this;
+ const { ws, walletRewardId, transactionId, taskId: retryTag } = this;
const transitionInfo = await ws.db.runReadWriteTx(
["rewards"],
async (tx) => {
@@ -198,7 +198,7 @@ export class RewardTransactionContext implements TransactionContext {
}
async failTransaction(): Promise<void> {
- const { ws, walletRewardId, transactionId, retryTag } = this;
+ const { ws, walletRewardId, transactionId, taskId: retryTag } = this;
const transitionInfo = await ws.db.runReadWriteTx(
["rewards"],
async (tx) => {
diff --git a/packages/taler-wallet-core/src/shepherd.ts b/packages/taler-wallet-core/src/shepherd.ts
index 462d51a0d..2352c844f 100644
--- a/packages/taler-wallet-core/src/shepherd.ts
+++ b/packages/taler-wallet-core/src/shepherd.ts
@@ -40,6 +40,8 @@ import {
import { processBackupForProvider } from "./backup/index.js";
import {
DbRetryInfo,
+ PendingTaskType,
+ TaskId,
TaskRunResult,
TaskRunResultType,
constructTaskIdentifier,
@@ -61,7 +63,6 @@ import { processPeerPullCredit } from "./pay-peer-pull-credit.js";
import { processPeerPullDebit } from "./pay-peer-pull-debit.js";
import { processPeerPushCredit } from "./pay-peer-push-credit.js";
import { processPeerPushDebit } from "./pay-peer-push-debit.js";
-import { PendingTaskType, TaskId } from "./pending-types.js";
import { processRecoupGroup } from "./recoup.js";
import { processRefreshGroup } from "./refresh.js";
import { constructTransactionIdentifier } from "./transactions.js";
diff --git a/packages/taler-wallet-core/src/transactions.ts b/packages/taler-wallet-core/src/transactions.ts
index 4bd68e184..8c6c3f5aa 100644
--- a/packages/taler-wallet-core/src/transactions.ts
+++ b/packages/taler-wallet-core/src/transactions.ts
@@ -49,6 +49,13 @@ import {
WithdrawalType,
} from "@gnu-taler/taler-util";
import {
+ constructTaskIdentifier,
+ PendingTaskType,
+ TaskId,
+ TaskIdentifiers,
+ TransactionContext,
+} from "./common.js";
+import {
DepositElementStatus,
DepositGroupRecord,
OperationRetryRecord,
@@ -69,23 +76,6 @@ import {
WithdrawalRecordType,
} from "./db.js";
import {
- OPERATION_STATUS_ACTIVE_FIRST,
- OPERATION_STATUS_ACTIVE_LAST,
- PeerPushDebitStatus,
- timestampPreciseFromDb,
- timestampProtocolFromDb,
- WalletDbReadOnlyTransaction,
-} from "./index.js";
-import { InternalWalletState } from "./internal-wallet-state.js";
-import { PendingTaskType, TaskId } from "./pending-types.js";
-import { assertUnreachable } from "./util/assertUnreachable.js";
-import { checkDbInvariant, checkLogicInvariant } from "./util/invariants.js";
-import {
- constructTaskIdentifier,
- TaskIdentifiers,
- TransactionContext,
-} from "./common.js";
-import {
computeDepositTransactionActions,
computeDepositTransactionStatus,
DepositTransactionContext,
@@ -95,6 +85,15 @@ import {
getExchangeWireDetailsInTx,
} from "./exchanges.js";
import {
+ OPERATION_STATUS_ACTIVE_FIRST,
+ OPERATION_STATUS_ACTIVE_LAST,
+ PeerPushDebitStatus,
+ timestampPreciseFromDb,
+ timestampProtocolFromDb,
+ WalletDbReadOnlyTransaction,
+} from "./index.js";
+import { InternalWalletState } from "./internal-wallet-state.js";
+import {
computePayMerchantTransactionActions,
computePayMerchantTransactionState,
computeRefundTransactionState,
@@ -133,6 +132,8 @@ import {
computeTipTransactionActions,
RewardTransactionContext,
} from "./reward.js";
+import { assertUnreachable } from "./util/assertUnreachable.js";
+import { checkDbInvariant, checkLogicInvariant } from "./util/invariants.js";
import {
augmentPaytoUrisForWithdrawal,
computeWithdrawalTransactionActions,
diff --git a/packages/taler-wallet-core/src/wallet-api-types.ts b/packages/taler-wallet-core/src/wallet-api-types.ts
index 37842b223..1ed1eef87 100644
--- a/packages/taler-wallet-core/src/wallet-api-types.ts
+++ b/packages/taler-wallet-core/src/wallet-api-types.ts
@@ -146,7 +146,6 @@ import {
RunBackupCycleRequest,
} from "./backup/index.js";
import { MerchantPaymentBalanceDetails } from "./balance.js";
-import { PendingOperationsResponse as PendingTasksResponse } from "./pending-types.js";
export enum WalletApiOperation {
InitWallet = "initWallet",
@@ -1076,11 +1075,13 @@ export type GetUserAttentionsUnreadCount = {
/**
* Get wallet-internal pending tasks.
+ *
+ * @deprecated
*/
export type GetPendingTasksOp = {
op: WalletApiOperation.GetPendingOperations;
request: EmptyObject;
- response: PendingTasksResponse;
+ response: any;
};
/**
diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts
index 2ddebd403..8b24fdc11 100644
--- a/packages/taler-wallet-core/src/wallet.ts
+++ b/packages/taler-wallet-core/src/wallet.ts
@@ -259,7 +259,6 @@ import {
getExchangeWithdrawalInfo,
getWithdrawalDetailsForUri,
} from "./withdraw.js";
-import { PendingOperationsResponse } from "./pending-types.js";
import { TaskScheduler } from "./shepherd.js";
import { assertUnreachable } from "./util/assertUnreachable.js";
import {
@@ -608,6 +607,18 @@ async function handlePrepareWithdrawExchange(
}
/**
+ * Response returned from the pending operations API.
+ *
+ * @deprecated this is a placeholder for the response type of a deprecated wallet-core request.
+ */
+export interface PendingOperationsResponse {
+ /**
+ * List of pending operations.
+ */
+ pendingOperations: any[];
+}
+
+/**
* Implementation of the "wallet-core" API.
*/
async function dispatchRequestInternal<Op extends WalletApiOperation>(
diff --git a/packages/taler-wallet-core/src/withdraw.ts b/packages/taler-wallet-core/src/withdraw.ts
index a986d00a9..7e9b295bd 100644
--- a/packages/taler-wallet-core/src/withdraw.ts
+++ b/packages/taler-wallet-core/src/withdraw.ts
@@ -85,6 +85,17 @@ import {
readSuccessResponseJsonOrThrow,
throwUnexpectedRequestError,
} from "@gnu-taler/taler-util/http";
+import {
+ PendingTaskType,
+ TaskId,
+ TaskRunResult,
+ TaskRunResultType,
+ TombstoneTag,
+ TransactionContext,
+ constructTaskIdentifier,
+ makeCoinAvailable,
+ makeCoinsVisible,
+} from "./common.js";
import { EddsaKeypair } from "./crypto/cryptoImplementation.js";
import {
CoinRecord,
@@ -101,46 +112,36 @@ import {
WithdrawalRecordType,
} from "./db.js";
import {
+ ReadyExchangeSummary,
+ fetchFreshExchange,
+ getExchangePaytoUri,
+ getExchangeWireDetailsInTx,
+ listExchanges,
+ markExchangeUsed,
+} from "./exchanges.js";
+import {
WalletDbReadOnlyTransaction,
WalletDbReadWriteTransaction,
isWithdrawableDenom,
timestampPreciseToDb,
} from "./index.js";
import { InternalWalletState } from "./internal-wallet-state.js";
+import { DbAccess } from "./query.js";
import {
- TaskRunResult,
- TaskRunResultType,
- TombstoneTag,
- TransactionContext,
- constructTaskIdentifier,
- makeCoinAvailable,
- makeCoinsVisible,
-} from "./common.js";
-import { PendingTaskType, TaskId } from "./pending-types.js";
+ TransitionInfo,
+ constructTransactionIdentifier,
+ notifyTransition,
+} from "./transactions.js";
import { assertUnreachable } from "./util/assertUnreachable.js";
import {
selectForcedWithdrawalDenominations,
selectWithdrawalDenominations,
} from "./util/coinSelection.js";
import { checkDbInvariant, checkLogicInvariant } from "./util/invariants.js";
-import { DbAccess } from "./query.js";
import {
WALLET_BANK_INTEGRATION_PROTOCOL_VERSION,
WALLET_EXCHANGE_PROTOCOL_VERSION,
} from "./versions.js";
-import {
- ReadyExchangeSummary,
- fetchFreshExchange,
- getExchangePaytoUri,
- getExchangeWireDetailsInTx,
- listExchanges,
- markExchangeUsed,
-} from "./exchanges.js";
-import {
- TransitionInfo,
- constructTransactionIdentifier,
- notifyTransition,
-} from "./transactions.js";
/**
* Logger for this file.
diff --git a/packages/taler-wallet-webextension/src/wallet/DeveloperPage.stories.tsx b/packages/taler-wallet-webextension/src/wallet/DeveloperPage.stories.tsx
index 2ca5305f5..c2c794e89 100644
--- a/packages/taler-wallet-webextension/src/wallet/DeveloperPage.stories.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/DeveloperPage.stories.tsx
@@ -19,10 +19,9 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { PendingTaskType, TaskId } from "@gnu-taler/taler-wallet-core";
+import { AbsoluteTime } from "@gnu-taler/taler-util";
import * as tests from "@gnu-taler/web-util/testing";
import { View as TestedComponent } from "./DeveloperPage.js";
-import { AbsoluteTime, PendingIdStr } from "@gnu-taler/taler-util";
export default {
title: "developer",
@@ -36,8 +35,8 @@ export const AllOff = tests.createExample(TestedComponent, {
onDownloadDatabase: async () => "this is the content of the database",
operations: [
{
- id: " " as TaskId,
- type: PendingTaskType.ExchangeUpdate,
+ id: " ",
+ type: "exchange-update",
exchangeBaseUrl: "http://exchange.url.",
givesLifeness: false,
lastError: undefined,
diff --git a/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx b/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx
index 5230d830f..0db7a07eb 100644
--- a/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx
@@ -23,26 +23,23 @@ import {
LogLevel,
NotificationType,
} from "@gnu-taler/taler-util";
-import {
- PendingTaskInfo,
- WalletApiOperation,
-} from "@gnu-taler/taler-wallet-core";
+import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { format } from "date-fns";
import { Fragment, VNode, h } from "preact";
import { useEffect, useRef, useState } from "preact/hooks";
+import { Checkbox } from "../components/Checkbox.js";
import { SelectList } from "../components/SelectList.js";
import { Time } from "../components/Time.js";
import { NotifyUpdateFadeOut } from "../components/styled/index.js";
+import { useAlertContext } from "../context/alert.js";
import { useBackendContext } from "../context/backend.js";
import { useAsyncAsHook } from "../hooks/useAsyncAsHook.js";
+import { useSettings } from "../hooks/useSettings.js";
import { Button } from "../mui/Button.js";
import { Grid } from "../mui/Grid.js";
import { Paper } from "../mui/Paper.js";
import { TextField } from "../mui/TextField.js";
-import { Checkbox } from "../components/Checkbox.js";
-import { useSettings } from "../hooks/useSettings.js";
-import { useAlertContext } from "../context/alert.js";
export function DeveloperPage(): VNode {
const listenAllEvents = Array.from<NotificationType>({ length: 1 });
@@ -105,7 +102,8 @@ type SplitedCoinInfo = {
};
export interface Props {
- operations: PendingTaskInfo[];
+ // FIXME: Pending operations don't exist anymore.
+ operations: any[];
coins: CoinsInfo;
exchanges: ExchangeListItem[];
onDownloadDatabase: () => Promise<string>;
@@ -351,8 +349,8 @@ export function View({ operations, coins, onDownloadDatabase }: Props): VNode {
name="inject"
description={
<i18n.Translate>
- Enabling this option will make `window.taler` be available
- in all sites
+ Enabling this option will make `window.taler` be available in all
+ sites
</i18n.Translate>
}
enabled={settings.injectTalerSupport!}
@@ -361,7 +359,6 @@ export function View({ operations, coins, onDownloadDatabase }: Props): VNode {
})}
/>
-
<Paper style={{ padding: 10, margin: 10 }}>
<h3>Logging</h3>
<div>
@@ -414,8 +411,8 @@ export function View({ operations, coins, onDownloadDatabase }: Props): VNode {
<Button
variant="contained"
onClick={async () => {
- const resp = await fetch(new URL("/keys", exchangeURL).href)
- const j = await resp.json()
+ const resp = await fetch(new URL("/keys", exchangeURL).href);
+ const j = await resp.json();
api.wallet.call(WalletApiOperation.AddGlobalCurrencyExchange, {
currency: j.currency,
exchangeBaseUrl: j.base_url,
@@ -426,98 +423,92 @@ export function View({ operations, coins, onDownloadDatabase }: Props): VNode {
Set exchange as Global
</Button>
</Paper>
- {
- downloadedDatabase && (
- <div>
- <i18n.Translate>
- Database exported at{" "}
- <Time
- timestamp={AbsoluteTime.fromMilliseconds(
- downloadedDatabase.time.getTime(),
- )}
- format="yyyy/MM/dd HH:mm:ss"
- />{" "}
- <a
- href={`data:text/plain;charset=utf-8;base64,${toBase64(
- downloadedDatabase.content,
- )}`}
- download={`taler-wallet-database-${format(
- downloadedDatabase.time,
- "yyyy/MM/dd_HH:mm",
- )}.json`}
- >
- <i18n.Translate>click here</i18n.Translate>
- </a>{" "}
- to download
- </i18n.Translate>
- </div>
- )
- }
+ {downloadedDatabase && (
+ <div>
+ <i18n.Translate>
+ Database exported at{" "}
+ <Time
+ timestamp={AbsoluteTime.fromMilliseconds(
+ downloadedDatabase.time.getTime(),
+ )}
+ format="yyyy/MM/dd HH:mm:ss"
+ />{" "}
+ <a
+ href={`data:text/plain;charset=utf-8;base64,${toBase64(
+ downloadedDatabase.content,
+ )}`}
+ download={`taler-wallet-database-${format(
+ downloadedDatabase.time,
+ "yyyy/MM/dd_HH:mm",
+ )}.json`}
+ >
+ <i18n.Translate>click here</i18n.Translate>
+ </a>{" "}
+ to download
+ </i18n.Translate>
+ </div>
+ )}
<br />
<p>
<i18n.Translate>Coins</i18n.Translate>:
</p>
- {
- Object.keys(money_by_exchange).map((ex, idx) => {
- const allcoins = money_by_exchange[ex];
- allcoins.sort((a, b) => {
- if (b.denom_value !== a.denom_value) {
- return b.denom_value - a.denom_value;
- }
- return b.denom_fraction - a.denom_fraction;
- });
+ {Object.keys(money_by_exchange).map((ex, idx) => {
+ const allcoins = money_by_exchange[ex];
+ allcoins.sort((a, b) => {
+ if (b.denom_value !== a.denom_value) {
+ return b.denom_value - a.denom_value;
+ }
+ return b.denom_fraction - a.denom_fraction;
+ });
- const coins = allcoins.reduce(
- (prev, cur) => {
- if (cur.status === CoinStatus.Fresh) prev.usable.push(cur);
- if (cur.status === CoinStatus.Dormant) prev.spent.push(cur);
- return prev;
- },
- {
- spent: [],
- usable: [],
- } as SplitedCoinInfo,
- );
+ const coins = allcoins.reduce(
+ (prev, cur) => {
+ if (cur.status === CoinStatus.Fresh) prev.usable.push(cur);
+ if (cur.status === CoinStatus.Dormant) prev.spent.push(cur);
+ return prev;
+ },
+ {
+ spent: [],
+ usable: [],
+ } as SplitedCoinInfo,
+ );
- return (
- <ShowAllCoins
- key={idx}
- coins={coins}
- ex={ex}
- currencies={currencies}
- />
- );
- })
- }
+ return (
+ <ShowAllCoins
+ key={idx}
+ coins={coins}
+ ex={ex}
+ currencies={currencies}
+ />
+ );
+ })}
<br />
- {
- operations && operations.length > 0 && (
- <Fragment>
- <p>
- <i18n.Translate>Pending operations</i18n.Translate>
- </p>
- <dl>
- {operations.reverse().map((o) => {
- return (
- <NotifyUpdateFadeOut key={hashObjectId(o)}>
- <dt>
- {o.type}{" "}
- <Time
- timestamp={o.timestampDue}
- format="yy/MM/dd HH:mm:ss"
- />
- </dt>
- <dd>
- <pre>{JSON.stringify(o, undefined, 2)}</pre>
- </dd>
- </NotifyUpdateFadeOut>
- );
- })}
- </dl>
- </Fragment>
- )
- }
- </div >
+ {operations && operations.length > 0 && (
+ <Fragment>
+ <p>
+ <i18n.Translate>Pending operations</i18n.Translate>
+ </p>
+ <dl>
+ {operations.reverse().map((o) => {
+ return (
+ <NotifyUpdateFadeOut key={hashObjectId(o)}>
+ <dt>
+ {o.type}{" "}
+ <Time
+ timestamp={o.timestampDue}
+ format="yy/MM/dd HH:mm:ss"
+ />
+ </dt>
+ <dd>
+ <pre>{JSON.stringify(o, undefined, 2)}</pre>
+ </dd>
+ </NotifyUpdateFadeOut>
+ );
+ })}
+ </dl>
+ </Fragment>
+ )}
+ </div>
);
}