diff options
author | Sebastian <sebasjm@gmail.com> | 2024-01-15 17:34:19 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2024-01-15 17:36:48 -0300 |
commit | 2e2cf4049a771c82fcc520686de3ace7603baa05 (patch) | |
tree | 620ab22d4fc0f621d0a574c8f98d1c49f1d67804 /packages/taler-util | |
parent | ef0bb60f23c0c755814f648b8d71a29a843e066c (diff) | |
download | wallet-core-2e2cf4049a771c82fcc520686de3ace7603baa05.tar.xz |
fixes #8083
Diffstat (limited to 'packages/taler-util')
-rw-r--r-- | packages/taler-util/src/http-client/bank-integration.ts | 8 | ||||
-rw-r--r-- | packages/taler-util/src/http-impl.node.ts | 2 | ||||
-rw-r--r-- | packages/taler-util/src/http-impl.qtart.ts | 2 | ||||
-rw-r--r-- | packages/taler-util/src/notifications.ts | 8 | ||||
-rw-r--r-- | packages/taler-util/src/transactions-types.ts | 10 | ||||
-rw-r--r-- | packages/taler-util/src/wallet-types.ts | 32 |
6 files changed, 52 insertions, 10 deletions
diff --git a/packages/taler-util/src/http-client/bank-integration.ts b/packages/taler-util/src/http-client/bank-integration.ts index 8131b36b6..757f1f897 100644 --- a/packages/taler-util/src/http-client/bank-integration.ts +++ b/packages/taler-util/src/http-client/bank-integration.ts @@ -1,6 +1,7 @@ import { HttpRequestLibrary, readSuccessResponseJsonOrThrow } from "../http-common.js"; import { HttpStatusCode } from "../http-status-codes.js"; import { createPlatformHttpLib } from "../http.js"; +import { LibtoolVersion } from "../libtool-version.js"; import { FailCasesByMethod, ResultByMethod, opKnownFailure, opSuccess, opUnknownFailure } from "../operation.js"; import { TalerErrorCode } from "../taler-error-codes.js"; import { codecForTalerErrorDetail } from "../wallet-types.js"; @@ -19,6 +20,8 @@ export type TalerBankIntegrationErrorsByMethod<prop extends keyof TalerBankInteg * The API is used by the wallets. */ export class TalerBankIntegrationHttpClient { + public readonly PROTOCOL_VERSION = "3:0:3"; + httpLib: HttpRequestLibrary; constructor( @@ -28,6 +31,11 @@ export class TalerBankIntegrationHttpClient { this.httpLib = httpClient ?? createPlatformHttpLib(); } + isCompatible(version: string): boolean { + const compare = LibtoolVersion.compare(this.PROTOCOL_VERSION, version) + return compare?.compatible ?? false + } + /** * https://docs.taler.net/core/api-bank-integration.html#get--config * diff --git a/packages/taler-util/src/http-impl.node.ts b/packages/taler-util/src/http-impl.node.ts index 5aca6e99d..8ec823eca 100644 --- a/packages/taler-util/src/http-impl.node.ts +++ b/packages/taler-util/src/http-impl.node.ts @@ -70,7 +70,7 @@ export class HttpLibImpl implements HttpRequestLibrary { private requireTls = false; constructor(args?: HttpLibArgs) { - this.throttlingEnabled = args?.enableThrottling ?? false; + this.throttlingEnabled = args?.enableThrottling ?? true; this.requireTls = args?.requireTls ?? false; } diff --git a/packages/taler-util/src/http-impl.qtart.ts b/packages/taler-util/src/http-impl.qtart.ts index d4ec26bd0..73ca417f7 100644 --- a/packages/taler-util/src/http-impl.qtart.ts +++ b/packages/taler-util/src/http-impl.qtart.ts @@ -44,7 +44,7 @@ export class HttpLibImpl implements HttpRequestLibrary { private requireTls = false; constructor(args?: HttpLibArgs) { - this.throttlingEnabled = args?.enableThrottling ?? false; + this.throttlingEnabled = args?.enableThrottling ?? true; this.requireTls = args?.requireTls ?? false; } diff --git a/packages/taler-util/src/notifications.ts b/packages/taler-util/src/notifications.ts index a5c971bdd..d84d3706d 100644 --- a/packages/taler-util/src/notifications.ts +++ b/packages/taler-util/src/notifications.ts @@ -22,6 +22,7 @@ /** * Imports. */ +import { WithdrawalOperationStatus } from "./index.node.js"; import { TransactionState } from "./transactions-types.js"; import { ExchangeEntryState, TalerErrorDetail } from "./wallet-types.js"; @@ -31,6 +32,7 @@ export enum NotificationType { PendingOperationProcessed = "pending-operation-processed", TransactionStateTransition = "transaction-state-transition", ExchangeStateTransition = "exchange-state-transition", + WithdrawalOperationTransition = "withdrawal-state-transition", } export interface ErrorInfoSummary { @@ -105,10 +107,16 @@ export interface PendingOperationProcessedNotification { id: string; taskResultType: string; } +export interface WithdrawalOperationTransitionNotification { + type: NotificationType.WithdrawalOperationTransition; + operationId: string; + state: WithdrawalOperationStatus; +} export type WalletNotification = | BalanceChangeNotification | BackupOperationErrorNotification | ExchangeStateTransitionNotification | PendingOperationProcessedNotification + | WithdrawalOperationTransitionNotification | TransactionStateTransitionNotification; diff --git a/packages/taler-util/src/transactions-types.ts b/packages/taler-util/src/transactions-types.ts index 17b56d13b..00802577a 100644 --- a/packages/taler-util/src/transactions-types.ts +++ b/packages/taler-util/src/transactions-types.ts @@ -708,6 +708,16 @@ export const codecForTransactionByIdRequest = .property("transactionId", codecForString()) .build("TransactionByIdRequest"); +export interface WithdrawalTransactionByURIRequest { + talerWithdrawUri: string; +} + +export const codecForWithdrawalTransactionByURIRequest = + (): Codec<WithdrawalTransactionByURIRequest> => + buildCodecForObject<WithdrawalTransactionByURIRequest>() + .property("talerWithdrawUri", codecForString()) + .build("WithdrawalTransactionByURIRequest"); + export const codecForTransactionsRequest = (): Codec<TransactionsRequest> => buildCodecForObject<TransactionsRequest>() .property("currency", codecOptional(codecForString())) diff --git a/packages/taler-util/src/wallet-types.ts b/packages/taler-util/src/wallet-types.ts index 8ccc93c38..583d5dff5 100644 --- a/packages/taler-util/src/wallet-types.ts +++ b/packages/taler-util/src/wallet-types.ts @@ -46,7 +46,7 @@ import { codecOptional, renderContext, } from "./codec.js"; -import { CurrencySpecification } from "./index.js"; +import { CurrencySpecification, WithdrawalOperationStatus } from "./index.js"; import { VersionMatchResult } from "./libtool-version.js"; import { PaytoUri } from "./payto.js"; import { AgeCommitmentProof } from "./taler-crypto.js"; @@ -71,10 +71,12 @@ import { } from "./taler-types.js"; import { AbsoluteTime, + Duration, TalerPreciseTimestamp, TalerProtocolDuration, TalerProtocolTimestamp, codecForAbsoluteTime, + codecForDuration, codecForTimestamp, } from "./time.js"; import { @@ -575,11 +577,11 @@ export interface CoinDumpJson { withdrawal_reserve_pub: string | undefined; coin_status: CoinStatus; spend_allocation: - | { - id: string; - amount: AmountString; - } - | undefined; + | { + id: string; + amount: AmountString; + } + | undefined; /** * Information about the age restriction */ @@ -942,13 +944,14 @@ export interface PreparePayResultAlreadyConfirmed { } export interface BankWithdrawDetails { - selectionDone: boolean; - transferDone: boolean; + status: WithdrawalOperationStatus, amount: AmountJson; senderWire?: string; suggestedExchange?: string; confirmTransferUrl?: string; wireTypes: string[]; + operationId: string, + apiBaseUrl: string, } export interface AcceptWithdrawalResponse { @@ -1799,6 +1802,7 @@ export const codecForApplyRefundFromPurchaseIdRequest = export interface GetWithdrawalDetailsForUriRequest { talerWithdrawUri: string; restrictAge?: number; + notifyChangeFromPendingTimeoutMs?: number; } export const codecForGetWithdrawalDetailsForUri = @@ -1806,6 +1810,7 @@ export const codecForGetWithdrawalDetailsForUri = buildCodecForObject<GetWithdrawalDetailsForUriRequest>() .property("talerWithdrawUri", codecForString()) .property("restrictAge", codecOptional(codecForNumber())) + .property("notifyChangeFromPendingTimeoutMs", codecOptional(codecForNumber())) .build("GetWithdrawalDetailsForUriRequest"); export interface ListKnownBankAccountsRequest { @@ -2185,6 +2190,9 @@ export interface TxIdResponse { } export interface WithdrawUriInfoResponse { + operationId: string; + status: WithdrawalOperationStatus, + confirmTransferUrl?: string; amount: AmountString; defaultExchangeBaseUrl?: string; possibleExchanges: ExchangeListItem[]; @@ -2193,6 +2201,14 @@ export interface WithdrawUriInfoResponse { export const codecForWithdrawUriInfoResponse = (): Codec<WithdrawUriInfoResponse> => buildCodecForObject<WithdrawUriInfoResponse>() + .property("operationId", codecForString()) + .property("confirmTransferUrl", codecOptional(codecForString())) + .property("status", codecForEither( + codecForConstString("pending"), + codecForConstString("selected"), + codecForConstString("aborted"), + codecForConstString("confirmed"), + )) .property("amount", codecForAmountString()) .property("defaultExchangeBaseUrl", codecOptional(codecForString())) .property("possibleExchanges", codecForList(codecForExchangeListItem())) |