wxApi.deleteTransaction(tid).then((_) => history.go(-1))}
onRetry={() => wxApi.retryTransaction(tid).then((_) => history.go(-1))}
onBack={() => {
route(Pages.history);
}}
/>
);
}
export interface WalletTransactionProps {
transaction: Transaction;
onDelete: () => void;
onRetry: () => void;
onBack: () => void;
}
export function TransactionView({
transaction,
onDelete,
onRetry,
onBack,
}: WalletTransactionProps) {
function TransactionTemplate({ children }: { children: VNode[] }) {
return (
{transaction.pending && (
This transaction is not completed
)}
);
}
function amountToString(text: AmountLike) {
const aj = Amounts.jsonifyAmount(text);
const amount = Amounts.stringifyValue(aj);
return `${amount} ${aj.currency}`;
}
if (transaction.type === TransactionType.Withdrawal) {
const fee = Amounts.sub(
Amounts.parseOrThrow(transaction.amountRaw),
Amounts.parseOrThrow(transaction.amountEffective),
).amount;
return (
Withdrawal
{transaction.timestamp.t_ms === "never"
? "never"
: format(transaction.timestamp.t_ms, "dd MMMM yyyy, HH:mm")}
);
}
const showLargePic = () => {};
if (transaction.type === TransactionType.Payment) {
const fee = Amounts.sub(
Amounts.parseOrThrow(transaction.amountEffective),
Amounts.parseOrThrow(transaction.amountRaw),
).amount;
return (
Payment
{transaction.timestamp.t_ms === "never"
? "never"
: format(transaction.timestamp.t_ms, "dd MMMM yyyy, HH:mm")}
{transaction.info.products && transaction.info.products.length > 0 && (
{transaction.info.products.map((p, k) => (
{p.quantity && p.quantity > 0 && (
x {p.quantity} {p.unit}
)}
{p.description}
))}
)}
);
}
if (transaction.type === TransactionType.Deposit) {
const fee = Amounts.sub(
Amounts.parseOrThrow(transaction.amountRaw),
Amounts.parseOrThrow(transaction.amountEffective),
).amount;
return (
Deposit
{transaction.timestamp.t_ms === "never"
? "never"
: format(transaction.timestamp.t_ms, "dd MMMM yyyy, HH:mm")}
);
}
if (transaction.type === TransactionType.Refresh) {
const fee = Amounts.sub(
Amounts.parseOrThrow(transaction.amountRaw),
Amounts.parseOrThrow(transaction.amountEffective),
).amount;
return (
Refresh
{transaction.timestamp.t_ms === "never"
? "never"
: format(transaction.timestamp.t_ms, "dd MMMM yyyy, HH:mm")}
);
}
if (transaction.type === TransactionType.Tip) {
const fee = Amounts.sub(
Amounts.parseOrThrow(transaction.amountRaw),
Amounts.parseOrThrow(transaction.amountEffective),
).amount;
return (
Tip
{transaction.timestamp.t_ms === "never"
? "never"
: format(transaction.timestamp.t_ms, "dd MMMM yyyy, HH:mm")}
);
}
if (transaction.type === TransactionType.Refund) {
const fee = Amounts.sub(
Amounts.parseOrThrow(transaction.amountRaw),
Amounts.parseOrThrow(transaction.amountEffective),
).amount;
return (
Refund
{transaction.timestamp.t_ms === "never"
? "never"
: format(transaction.timestamp.t_ms, "dd MMMM yyyy, HH:mm")}
{transaction.info.summary}
{transaction.info.products && transaction.info.products.length > 0 && (
{transaction.info.products.map((p, k) => (
{p.quantity && p.quantity > 0 && (
x {p.quantity} {p.unit}
)}
{p.description}
))}
)}
);
}
return ;
}