fix #7162
This commit is contained in:
parent
a06f7f7cbb
commit
c13f3cf1cd
@ -32,7 +32,7 @@ export enum Pages {
|
||||
welcome = "/welcome",
|
||||
|
||||
balance = "/balance",
|
||||
balance_history = "/balance/history/:currency",
|
||||
balance_history = "/balance/history/:currency?",
|
||||
balance_manual_withdraw = "/balance/manual-withdraw/:currency?",
|
||||
balance_deposit = "/balance/deposit/:currency",
|
||||
balance_transaction = "/balance/transaction/:tid",
|
||||
|
@ -23,6 +23,7 @@
|
||||
import { PrepareTipResult } from "@gnu-taler/taler-util";
|
||||
import { h, VNode } from "preact";
|
||||
import { useEffect, useState } from "preact/hooks";
|
||||
import { Loading } from "../components/Loading";
|
||||
import { AmountView } from "../renderHtml";
|
||||
import * as wxApi from "../wxApi";
|
||||
|
||||
@ -105,7 +106,7 @@ export function TipPage({ talerTipUri }: Props): VNode {
|
||||
}
|
||||
|
||||
if (!prepareTipResult) {
|
||||
return <span>Loading ...</span>;
|
||||
return <Loading />;
|
||||
}
|
||||
|
||||
return (
|
||||
|
@ -127,13 +127,6 @@ function Application(): VNode {
|
||||
|
||||
<Route path={Pages.pending} component={Pending} />
|
||||
|
||||
<Route
|
||||
path={Pages.balance_transaction}
|
||||
component={({ tid }: { tid: string }) =>
|
||||
goToWalletPage(Pages.balance_transaction.replace(":tid", tid))
|
||||
}
|
||||
/>
|
||||
|
||||
<Route
|
||||
path={Pages.backup}
|
||||
component={BackupPage}
|
||||
|
@ -21,7 +21,6 @@ import {
|
||||
NotificationType,
|
||||
} from "@gnu-taler/taler-util";
|
||||
import { h, VNode } from "preact";
|
||||
import { route } from "preact-router";
|
||||
import { useState } from "preact/hooks";
|
||||
import { Loading } from "../components/Loading";
|
||||
import { LoadingError } from "../components/LoadingError";
|
||||
@ -32,7 +31,12 @@ import { CreateManualWithdraw } from "./CreateManualWithdraw";
|
||||
import { ExchangeAddPage } from "./ExchangeAddPage";
|
||||
import { ReserveCreated } from "./ReserveCreated";
|
||||
|
||||
export function ManualWithdrawPage({ currency }: { currency?: string }): VNode {
|
||||
interface Props {
|
||||
currency?: string;
|
||||
onCancel: () => void;
|
||||
}
|
||||
|
||||
export function ManualWithdrawPage({ currency, onCancel }: Props): VNode {
|
||||
const [success, setSuccess] = useState<
|
||||
| {
|
||||
response: AcceptManualWithdrawalResult;
|
||||
@ -80,9 +84,7 @@ export function ManualWithdrawPage({ currency }: { currency?: string }): VNode {
|
||||
payto={success.response.exchangePaytoUris[0]}
|
||||
exchangeBaseUrl={success.exchangeBaseUrl}
|
||||
amount={success.amount}
|
||||
onBack={() => {
|
||||
route(Pages.balance);
|
||||
}}
|
||||
onCancel={onCancel}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
@ -9,13 +9,13 @@ export interface Props {
|
||||
payto: string;
|
||||
exchangeBaseUrl: string;
|
||||
amount: AmountJson;
|
||||
onBack: () => void;
|
||||
onCancel: () => void;
|
||||
}
|
||||
|
||||
export function ReserveCreated({
|
||||
reservePub,
|
||||
payto,
|
||||
onBack,
|
||||
onCancel,
|
||||
exchangeBaseUrl,
|
||||
amount,
|
||||
}: Props): VNode {
|
||||
@ -55,7 +55,7 @@ export function ReserveCreated({
|
||||
</section>
|
||||
<footer>
|
||||
<div />
|
||||
<ButtonDestructive onClick={onBack}>
|
||||
<ButtonDestructive onClick={onCancel}>
|
||||
Cancel withdrawal
|
||||
</ButtonDestructive>
|
||||
</footer>
|
||||
|
@ -26,11 +26,12 @@ import {
|
||||
} from "@gnu-taler/taler-util";
|
||||
import { differenceInSeconds } from "date-fns";
|
||||
import { ComponentChildren, Fragment, h, VNode } from "preact";
|
||||
import { route } from "preact-router";
|
||||
import { useState } from "preact/hooks";
|
||||
import emptyImg from "../../static/img/empty.png";
|
||||
import { BankDetailsByPaytoType } from "../components/BankDetailsByPaytoType";
|
||||
import { ErrorTalerOperation } from "../components/ErrorTalerOperation";
|
||||
import { Loading } from "../components/Loading";
|
||||
import { LoadingError } from "../components/LoadingError";
|
||||
import { Part } from "../components/Part";
|
||||
import {
|
||||
Button,
|
||||
@ -49,7 +50,11 @@ import { useAsyncAsHook } from "../hooks/useAsyncAsHook";
|
||||
import { Pages } from "../NavigationBar";
|
||||
import * as wxApi from "../wxApi";
|
||||
|
||||
export function TransactionPage({ tid }: { tid: string }): VNode {
|
||||
interface Props {
|
||||
tid: string;
|
||||
goToWalletHistory: (currency?: string) => void;
|
||||
}
|
||||
export function TransactionPage({ tid, goToWalletHistory }: Props): VNode {
|
||||
async function getTransaction(): Promise<Transaction> {
|
||||
const res = await wxApi.getTransactions();
|
||||
const ts = res.transactions.filter((t) => t.transactionId === tid);
|
||||
@ -65,43 +70,30 @@ export function TransactionPage({ tid }: { tid: string }): VNode {
|
||||
]);
|
||||
|
||||
if (!state) {
|
||||
return (
|
||||
<div>
|
||||
<i18n.Translate>Loading ...</i18n.Translate>
|
||||
</div>
|
||||
);
|
||||
return <Loading />;
|
||||
}
|
||||
|
||||
if (state.hasError) {
|
||||
route(Pages.balance);
|
||||
return (
|
||||
<div>
|
||||
<i18n.Translate>
|
||||
There was an error. Redirecting into the history page
|
||||
</i18n.Translate>
|
||||
</div>
|
||||
<LoadingError
|
||||
title="Could not load the transaction information"
|
||||
error={state}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
function goToHistory(): void {
|
||||
const currency =
|
||||
state !== undefined && !state.hasError
|
||||
? Amounts.parseOrThrow(state.response.amountRaw).currency
|
||||
: undefined;
|
||||
|
||||
if (currency) {
|
||||
route(Pages.balance_history.replace(":currency", currency));
|
||||
} else {
|
||||
route(Pages.balance);
|
||||
}
|
||||
}
|
||||
const currency = Amounts.parse(state.response.amountRaw)?.currency;
|
||||
|
||||
return (
|
||||
<TransactionView
|
||||
transaction={state.response}
|
||||
onDelete={() => wxApi.deleteTransaction(tid).then(goToHistory)}
|
||||
onRetry={() => wxApi.retryTransaction(tid).then(goToHistory)}
|
||||
onBack={goToHistory}
|
||||
onDelete={() =>
|
||||
wxApi.deleteTransaction(tid).then(() => goToWalletHistory(currency))
|
||||
}
|
||||
onRetry={() =>
|
||||
wxApi.retryTransaction(tid).then(() => goToWalletHistory(currency))
|
||||
}
|
||||
onBack={() => goToWalletHistory(currency)}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
@ -121,12 +121,6 @@ function Application(): VNode {
|
||||
* BALANCE
|
||||
*/}
|
||||
|
||||
<Route
|
||||
path={Pages.balance}
|
||||
component={Redirect}
|
||||
to={Pages.balance_history.replace(":currency", "")}
|
||||
/>
|
||||
|
||||
<Route
|
||||
path={Pages.balance_history}
|
||||
component={HistoryPage}
|
||||
@ -145,11 +139,22 @@ function Application(): VNode {
|
||||
<Route
|
||||
path={Pages.balance_transaction}
|
||||
component={TransactionPage}
|
||||
goToWalletHistory={(currency?: string) => {
|
||||
route(
|
||||
Pages.balance_history.replace(
|
||||
":currency",
|
||||
currency || "",
|
||||
),
|
||||
);
|
||||
}}
|
||||
/>
|
||||
|
||||
<Route
|
||||
path={Pages.balance_manual_withdraw}
|
||||
component={ManualWithdrawPage}
|
||||
onCancel={() => {
|
||||
route(Pages.balance);
|
||||
}}
|
||||
/>
|
||||
|
||||
<Route
|
||||
@ -232,7 +237,14 @@ function Application(): VNode {
|
||||
|
||||
{/**
|
||||
* NOT FOUND
|
||||
* all redirects should be at the end
|
||||
*/}
|
||||
<Route
|
||||
path={Pages.balance}
|
||||
component={Redirect}
|
||||
to={Pages.balance_history.replace(":currency", "")}
|
||||
/>
|
||||
|
||||
<Route
|
||||
default
|
||||
component={Redirect}
|
||||
|
Loading…
Reference in New Issue
Block a user