taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit c87a0d55145f140b1f104437ecdd1a1ca1040186
parent 2f441cd1b9e069a0976750b075d36de1f051a0e3
Author: Florian Dold <florian.dold@gmail.com>
Date:   Mon, 11 Dec 2017 17:46:06 +0100

show next url to go after tipping

Diffstat:
Msrc/types.ts | 11+++++++++++
Msrc/wallet.ts | 5+++--
Msrc/webex/notify.ts | 2+-
Msrc/webex/pages/tip.tsx | 2+-
Msrc/webex/wxApi.ts | 4++--
Msrc/webex/wxBackend.ts | 2+-
6 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/src/types.ts b/src/types.ts @@ -1943,6 +1943,11 @@ export interface TipRecord { * Identifier for the tip, chosen by the merchant. */ tipId: string; + + /** + * URL to go to once the tip has been accepted. + */ + nextUrl: string; } @@ -2007,6 +2012,9 @@ export class GetTipPlanchetsRequest { @Checkable.String exchangeUrl: string; + @Checkable.String + nextUrl: string; + static checked: (obj: any) => GetTipPlanchetsRequest; } @@ -2027,5 +2035,8 @@ export class TipToken { @Checkable.Value(AmountJson) amount: AmountJson; + @Checkable.String + next_url: string; + static checked: (obj: any) => TipToken; } diff --git a/src/wallet.ts b/src/wallet.ts @@ -329,7 +329,7 @@ export const WALLET_PROTOCOL_VERSION = "2:0:0"; * In the future we might consider adding migration functions for * each version increment. */ -export const WALLET_DB_VERSION = 21; +export const WALLET_DB_VERSION = 22; const builtinCurrencies: CurrencyRecord[] = [ { @@ -2862,7 +2862,7 @@ export class Wallet { * Get planchets for a tip. Creates new planchets if they don't exist already * for this tip. The tip is uniquely identified by the merchant's domain and the tip id. */ - async getTipPlanchets(merchantDomain: string, tipId: string, amount: AmountJson, deadline: number, exchangeUrl: string): Promise<TipPlanchetDetail[]> { + async getTipPlanchets(merchantDomain: string, tipId: string, amount: AmountJson, deadline: number, exchangeUrl: string, nextUrl: string): Promise<TipPlanchetDetail[]> { let tipRecord = await this.q().get(Stores.tips, [tipId, merchantDomain]); if (!tipRecord) { await this.updateExchangeFromUrl(exchangeUrl); @@ -2876,6 +2876,7 @@ export class Wallet { deadline, exchangeUrl, merchantDomain, + nextUrl, planchets, tipId, }; diff --git a/src/webex/notify.ts b/src/webex/notify.ts @@ -272,7 +272,7 @@ function talerPay(msg: any): Promise<any> { const merchantDomain = new URI(document.location.href).origin(); let walletResp; try { - walletResp = await wxApi.getTipPlanchets(merchantDomain, tipToken.tip_id, tipToken.amount, deadlineSec, tipToken.exchange_url); + walletResp = await wxApi.getTipPlanchets(merchantDomain, tipToken.tip_id, tipToken.amount, deadlineSec, tipToken.exchange_url, tipToken.next_url); } catch (e) { wxApi.logAndDisplayError({ message: e.message, diff --git a/src/webex/pages/tip.tsx b/src/webex/pages/tip.tsx @@ -121,7 +121,7 @@ class TipDisplay extends React.Component<TipDisplayProps, TipDisplayState> { <h2>Tip Received!</h2> <p>You received a tip of <strong>{renderAmount(ts.tip.amount)}</strong> from <strong>{this.props.merchantDomain}</strong>.</p> {ts.tip.accepted - ? <p>You've accepted this tip!</p> + ? <p>You've accepted this tip! <a href={ts.tip.nextUrl}>Go back to merchant</a></p> : this.renderButtons() } {this.renderExchangeInfo(ts)} diff --git a/src/webex/wxApi.ts b/src/webex/wxApi.ts @@ -366,8 +366,8 @@ export function getFullRefundFees(args: { refundPermissions: RefundPermission[] /** * Get or generate planchets to give the merchant that wants to tip us. */ -export function getTipPlanchets(merchantDomain: string, tipId: string, amount: AmountJson, deadline: number, exchangeUrl: string): Promise<TipPlanchetDetail[]> { - return callBackend("get-tip-planchets", { merchantDomain, tipId, amount, deadline, exchangeUrl }); +export function getTipPlanchets(merchantDomain: string, tipId: string, amount: AmountJson, deadline: number, exchangeUrl: string, nextUrl: string): Promise<TipPlanchetDetail[]> { + return callBackend("get-tip-planchets", { merchantDomain, tipId, amount, deadline, exchangeUrl, nextUrl }); } export function getTipStatus(merchantDomain: string, tipId: string): Promise<TipStatus> { diff --git a/src/webex/wxBackend.ts b/src/webex/wxBackend.ts @@ -335,7 +335,7 @@ function handleMessage(sender: MessageSender, } case "get-tip-planchets": { const req = GetTipPlanchetsRequest.checked(detail); - return needsWallet().getTipPlanchets(req.merchantDomain, req.tipId, req.amount, req.deadline, req.exchangeUrl); + return needsWallet().getTipPlanchets(req.merchantDomain, req.tipId, req.amount, req.deadline, req.exchangeUrl, req.nextUrl); } default: // Exhaustiveness check.