wxApi.deleteTransaction(tid).then(_ => history.go(-1))}
onRetry={() => wxApi.retryTransaction(tid).then(_ => history.go(-1))}
onBack={() => { history.go(-1); }} />;
}
export interface WalletTransactionProps {
transaction?: Transaction,
onDelete: () => void,
onRetry: () => void,
onBack: () => void,
}
export function TransactionView({ transaction, onDelete, onRetry, onBack }: WalletTransactionProps) {
if (!transaction) {
return Loading ...
;
}
function Footer() {
return
}
function Status() {
if (transaction?.error) {
return (failed)
}
if (!transaction?.pending) return null
return (pending...)
}
function Error() {
if (!transaction?.error) return null
return
}
const Fee = ({ value }: { value: AmountJson }) => Amounts.isNonZero(value) ?
(fee {Amounts.stringify(value)}) : null
if (transaction.type === TransactionType.Withdrawal) {
const fee = Amounts.sub(
Amounts.parseOrThrow(transaction.amountRaw),
Amounts.parseOrThrow(transaction.amountEffective),
).amount
return (
{transaction.timestamp.t_ms === "never" ? "never" : format(transaction.timestamp.t_ms, 'dd/MM/yyyy HH:mm:ss')}
From {transaction.exchangeBaseUrl}
Withdraw
{transaction.amountEffective}
);
}
const showLargePic = () => {
}
if (transaction.type === TransactionType.Payment) {
const fee = Amounts.sub(
Amounts.parseOrThrow(transaction.amountEffective),
Amounts.parseOrThrow(transaction.amountRaw),
).amount
return (
{transaction.timestamp.t_ms === "never" ? "never" : format(transaction.timestamp.t_ms, 'dd/MM/yyyy HH:mm:ss')}
To {transaction.info.merchant.name}
Payment
{transaction.amountEffective}
#{transaction.info.orderId}
{transaction.info.summary}
{transaction.info.products && transaction.info.products.length > 0 &&
{transaction.info.products.map(p =>
{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 (
{transaction.timestamp.t_ms === "never" ? "never" : format(transaction.timestamp.t_ms, 'dd/MM/yyyy HH:mm:ss')}
To {transaction.targetPaytoUri}
Deposit
{transaction.amountEffective}
);
}
if (transaction.type === TransactionType.Refresh) {
const fee = Amounts.sub(
Amounts.parseOrThrow(transaction.amountRaw),
Amounts.parseOrThrow(transaction.amountEffective),
).amount
return (
{transaction.timestamp.t_ms === "never" ? "never" : format(transaction.timestamp.t_ms, 'dd/MM/yyyy HH:mm:ss')}
From {transaction.exchangeBaseUrl}
Refresh
{transaction.amountEffective}
);
}
if (transaction.type === TransactionType.Tip) {
const fee = Amounts.sub(
Amounts.parseOrThrow(transaction.amountRaw),
Amounts.parseOrThrow(transaction.amountEffective),
).amount
return (
{transaction.timestamp.t_ms === "never" ? "never" : format(transaction.timestamp.t_ms, 'dd/MM/yyyy HH:mm:ss')}
From {transaction.merchantBaseUrl}
Tip
{transaction.amountEffective}
);
}
if (transaction.type === TransactionType.Refund) {
const fee = Amounts.sub(
Amounts.parseOrThrow(transaction.amountRaw),
Amounts.parseOrThrow(transaction.amountEffective),
).amount
return (
{transaction.timestamp.t_ms === "never" ? "never" : format(transaction.timestamp.t_ms, 'dd/MM/yyyy HH:mm:ss')}
From {transaction.info.merchant.name}
Refund
{transaction.amountEffective}
#{transaction.info.orderId}
{transaction.info.summary}
{transaction.info.products && transaction.info.products.length > 0 &&
{transaction.info.products.map(p =>
{p.quantity && p.quantity > 0 &&
x {p.quantity} {p.unit}
}
{p.description}
)}
}
);
}
return
}