From ff3f96566151d390462931574184ed9e6b84db5b Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 11 Aug 2020 17:32:11 +0530 Subject: towards the improved confirmPay API --- packages/taler-wallet-core/src/operations/pay.ts | 9 ++++++++- packages/taler-wallet-core/src/types/transactions.ts | 2 +- packages/taler-wallet-core/src/types/walletTypes.ts | 20 +++++++++++++++++++- 3 files changed, 28 insertions(+), 3 deletions(-) (limited to 'packages/taler-wallet-core') diff --git a/packages/taler-wallet-core/src/operations/pay.ts b/packages/taler-wallet-core/src/operations/pay.ts index fd997fb14..db5a56d18 100644 --- a/packages/taler-wallet-core/src/operations/pay.ts +++ b/packages/taler-wallet-core/src/operations/pay.ts @@ -49,6 +49,7 @@ import { PreparePayResult, RefreshReason, PreparePayResultType, + ConfirmPayResultType, } from "../types/walletTypes"; import * as Amounts from "../util/amounts"; import { AmountJson } from "../util/amounts"; @@ -853,7 +854,10 @@ export async function submitPay( lastSessionId: sessionId, }; - return { nextUrl }; + return { + type: ConfirmPayResultType.Done, + nextUrl, + }; } /** @@ -957,6 +961,9 @@ export async function preparePayForUri( await tx.put(Stores.purchases, p); }); const r = await submitPay(ws, proposalId); + if (r.type !== ConfirmPayResultType.Done) { + throw Error("submitting pay failed"); + } return { status: PreparePayResultType.AlreadyConfirmed, contractTerms: JSON.parse(purchase.contractTermsRaw), diff --git a/packages/taler-wallet-core/src/types/transactions.ts b/packages/taler-wallet-core/src/types/transactions.ts index fe5580f85..47e3e7d5b 100644 --- a/packages/taler-wallet-core/src/types/transactions.ts +++ b/packages/taler-wallet-core/src/types/transactions.ts @@ -53,7 +53,7 @@ export interface TransactionsResponse { transactions: Transaction[]; } -interface TransactionError { +export interface TransactionError { /** * TALER_EC_* unique error code. * The action(s) offered and message displayed on the transaction item depend on this code. diff --git a/packages/taler-wallet-core/src/types/walletTypes.ts b/packages/taler-wallet-core/src/types/walletTypes.ts index 6175c40eb..26d7e8e0c 100644 --- a/packages/taler-wallet-core/src/types/walletTypes.ts +++ b/packages/taler-wallet-core/src/types/walletTypes.ts @@ -45,6 +45,7 @@ import { } from "../util/codec"; import { AmountString } from "./talerTypes"; import { codec } from ".."; +import { TransactionError } from "./transactions"; /** * Response for the create reserve request to the wallet. @@ -192,13 +193,30 @@ export function mkAmount( return { value, fraction, currency }; } +export const enum ConfirmPayResultType { + Done = "done", + Pending = "pending", +} + /** * Result for confirmPay */ -export interface ConfirmPayResult { +export interface ConfirmPayResultDone { + type: ConfirmPayResultType.Done, + nextUrl: string; } +export interface ConfirmPayResultPending { + type: ConfirmPayResultType.Pending, + + lastError: TransactionError; +} + +export type ConfirmPayResult = + | ConfirmPayResultDone + | ConfirmPayResultPending + /** * Information about all sender wire details known to the wallet, * as well as exchanges that accept these wire types. -- cgit v1.2.3