summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-12-11 17:46:06 +0100
committerFlorian Dold <florian.dold@gmail.com>2017-12-11 17:46:06 +0100
commitc87a0d55145f140b1f104437ecdd1a1ca1040186 (patch)
treea7ffa0c89520a573360d6fd4a65bf7727888a1c4
parent2f441cd1b9e069a0976750b075d36de1f051a0e3 (diff)
downloadwallet-core-c87a0d55145f140b1f104437ecdd1a1ca1040186.tar.gz
wallet-core-c87a0d55145f140b1f104437ecdd1a1ca1040186.tar.bz2
wallet-core-c87a0d55145f140b1f104437ecdd1a1ca1040186.zip
show next url to go after tipping
-rw-r--r--src/types.ts11
-rw-r--r--src/wallet.ts5
-rw-r--r--src/webex/notify.ts2
-rw-r--r--src/webex/pages/tip.tsx2
-rw-r--r--src/webex/wxApi.ts4
-rw-r--r--src/webex/wxBackend.ts2
6 files changed, 19 insertions, 7 deletions
diff --git a/src/types.ts b/src/types.ts
index ec4929c33..69ed64446 100644
--- 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
index 1966db768..a597fd5bc 100644
--- 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
index 1da8af1cd..05883e8bb 100644
--- 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
index 7f3a7c1fe..678c0dfdd 100644
--- 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
index e362fc34a..61a45c024 100644
--- 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
index fd5df7e47..a7757c68e 100644
--- 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.