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 
}