summaryrefslogtreecommitdiff
path: root/packages/taler-util
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2024-01-15 17:34:19 -0300
committerSebastian <sebasjm@gmail.com>2024-01-15 17:36:48 -0300
commit2e2cf4049a771c82fcc520686de3ace7603baa05 (patch)
tree620ab22d4fc0f621d0a574c8f98d1c49f1d67804 /packages/taler-util
parentef0bb60f23c0c755814f648b8d71a29a843e066c (diff)
downloadwallet-core-2e2cf4049a771c82fcc520686de3ace7603baa05.tar.gz
wallet-core-2e2cf4049a771c82fcc520686de3ace7603baa05.tar.bz2
wallet-core-2e2cf4049a771c82fcc520686de3ace7603baa05.zip
fixes #8083
Diffstat (limited to 'packages/taler-util')
-rw-r--r--packages/taler-util/src/http-client/bank-integration.ts8
-rw-r--r--packages/taler-util/src/http-impl.node.ts2
-rw-r--r--packages/taler-util/src/http-impl.qtart.ts2
-rw-r--r--packages/taler-util/src/notifications.ts8
-rw-r--r--packages/taler-util/src/transactions-types.ts10
-rw-r--r--packages/taler-util/src/wallet-types.ts32
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()))