preliminary retry for refunds

This commit is contained in:
Florian Dold 2018-04-10 21:20:04 +02:00
parent 54b5a9af7f
commit 1956428a34
No known key found for this signature in database
GPG Key ID: D2E4F00F29D02A4B
7 changed files with 21 additions and 9 deletions

View File

@ -103,7 +103,7 @@ msgstr "Der Händler %1$s möchte einen Vertrag über %2$s mit Ihnen abschließe
msgid "The total price is %1$s (plus %2$s fees)."
msgstr ""
#: src/webex/pages/confirm-contract.tsx:384
#: src/webex/pages/confirm-contract.tsx:385
#, c-format
msgid "The total price is %1$s."
msgstr ""

View File

@ -103,7 +103,7 @@ msgstr ""
msgid "The total price is %1$s (plus %2$s fees)."
msgstr ""
#: src/webex/pages/confirm-contract.tsx:384
#: src/webex/pages/confirm-contract.tsx:385
#, c-format
msgid "The total price is %1$s."
msgstr ""

View File

@ -103,7 +103,7 @@ msgstr ""
msgid "The total price is %1$s (plus %2$s fees)."
msgstr ""
#: src/webex/pages/confirm-contract.tsx:384
#: src/webex/pages/confirm-contract.tsx:385
#, c-format
msgid "The total price is %1$s."
msgstr ""

View File

@ -103,7 +103,7 @@ msgstr ""
msgid "The total price is %1$s (plus %2$s fees)."
msgstr ""
#: src/webex/pages/confirm-contract.tsx:384
#: src/webex/pages/confirm-contract.tsx:385
#, c-format
msgid "The total price is %1$s."
msgstr ""

View File

@ -105,7 +105,7 @@ msgstr "Säljaren %1$s erbjuder följande:"
msgid "The total price is %1$s (plus %2$s fees)."
msgstr "Det totala priset är %1$s (plus %2$s avgifter).\n"
#: src/webex/pages/confirm-contract.tsx:384
#: src/webex/pages/confirm-contract.tsx:385
#, fuzzy, c-format
msgid "The total price is %1$s."
msgstr "Det totala priset är %1$s."

View File

@ -103,7 +103,7 @@ msgstr ""
msgid "The total price is %1$s (plus %2$s fees)."
msgstr ""
#: src/webex/pages/confirm-contract.tsx:384
#: src/webex/pages/confirm-contract.tsx:385
#, c-format
msgid "The total price is %1$s."
msgstr ""

View File

@ -31,6 +31,8 @@ import * as dbTypes from "../../dbTypes";
import { AmountJson } from "../../amounts";
import * as Amounts from "../../amounts";
import * as timer from "../../timer";
import { AmountDisplay } from "../renderHtml";
import * as wxApi from "../wxApi";
@ -48,7 +50,11 @@ interface RefundStatusViewState {
interface RefundDetailProps {
purchase: dbTypes.PurchaseRecord;
fullRefundFees: AmountJson;
/**
* Full refund fees (including refreshing) so far, or undefined if no refund
* permission was processed yet
*/
fullRefundFees?: AmountJson;
}
const RefundDetail = ({purchase, fullRefundFees}: RefundDetailProps) => {
@ -85,7 +91,8 @@ const RefundDetail = ({purchase, fullRefundFees}: RefundDetailProps) => {
<div>
{hasPending ? <p>Refund pending: <AmountDisplay amount={amountPending} /></p> : null}
<p>
Refund received: <AmountDisplay amount={amountDone} /> (refund fees: <AmountDisplay amount={fullRefundFees} />)
Refund received: <AmountDisplay amount={amountDone} />{" "}
(refund fees: {fullRefundFees ? <AmountDisplay amount={fullRefundFees} /> : "??" })
</p>
</div>
);
@ -107,6 +114,9 @@ class RefundStatusView extends React.Component<RefundStatusViewProps, RefundStat
this.update();
}
});
// Just to be safe: update every second, in case we miss a notification
// from the background page.
timer.after(1000, () => this.update());
}
render(): JSX.Element {
@ -138,7 +148,7 @@ class RefundStatusView extends React.Component<RefundStatusViewProps, RefundStat
</p>
<p>Total amount: <AmountDisplay amount={Amounts.parseOrThrow(purchase.contractTerms.amount)} /></p>
{purchase.finished
? <RefundDetail purchase={purchase} fullRefundFees={this.state.refundFees!} />
? <RefundDetail purchase={purchase} fullRefundFees={this.state.refundFees} />
: <p>Purchase not completed.</p>}
</div>
);
@ -157,6 +167,8 @@ class RefundStatusView extends React.Component<RefundStatusViewProps, RefundStat
}
const purchase = await wxApi.getPurchase(contractTermsHash);
console.log("got purchase", purchase);
// We got a result, but it might be undefined if not found in DB.
this.setState({ purchase, gotResult: true });
const refundsDone = Object.keys(purchase.refundsDone).map((x) => purchase.refundsDone[x]);
if (refundsDone.length) {
const refundFees = await wxApi.getFullRefundFees({ refundPermissions: refundsDone });