2021-06-03 06:07:29 +02:00
/ *
This file is part of GNU Taler
( C ) 2021 Taler Systems S . A .
GNU Taler is free software ; you can redistribute it and / or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation ; either version 3 , or ( at your option ) any later version .
GNU Taler is distributed in the hope that it will be useful , but WITHOUT ANY
WARRANTY ; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE . See the GNU General Public License for more details .
You should have received a copy of the GNU General Public License along with
GNU Taler ; see the file COPYING . If not , see < http : / / www.gnu.org / licenses / >
* /
/ * *
*
* @author Sebastian Javier Marchano ( sebasjm )
* /
2021-06-08 21:01:41 +02:00
import {
PaymentStatus ,
TransactionCommon , TransactionDeposit , TransactionPayment ,
TransactionRefresh , TransactionRefund , TransactionTip , TransactionType ,
TransactionWithdrawal ,
WithdrawalType
} from '@gnu-taler/taler-util' ;
2021-06-16 23:21:03 +02:00
import { FunctionalComponent } from 'preact' ;
import { TransactionView as TestedComponent } from './Transaction' ;
2021-06-03 06:07:29 +02:00
export default {
2021-06-16 23:21:03 +02:00
title : 'popup/transaction/details' ,
component : TestedComponent ,
2021-06-03 06:07:29 +02:00
decorators : [
( Story : any ) = > < div >
< link key = "1" rel = "stylesheet" type = "text/css" href = "/style/pure.css" / >
< link key = "2" rel = "stylesheet" type = "text/css" href = "/style/popup.css" / >
< link key = "3" rel = "stylesheet" type = "text/css" href = "/style/wallet.css" / >
2021-06-21 01:54:58 +02:00
< div style = { { margin : "1em" , width : 400 , display : 'flex' , padding : '0.5em' , height : 'calc(320px - 34px)' , border : 'black solid 1px' } } >
2021-06-03 06:07:29 +02:00
< Story / >
< / div >
< / div >
] ,
} ;
const commonTransaction = {
amountRaw : 'USD:10' ,
amountEffective : 'USD:9' ,
pending : false ,
timestamp : {
t_ms : new Date ( ) . getTime ( )
} ,
transactionId : '12' ,
} as TransactionCommon
const exampleData = {
withdraw : {
. . . commonTransaction ,
type : TransactionType . Withdrawal ,
exchangeBaseUrl : 'http://exchange.taler' ,
withdrawalDetails : {
confirmed : false ,
exchangePaytoUris : [ 'payto://x-taler-bank/bank/account' ] ,
type : WithdrawalType . ManualTransfer ,
}
} as TransactionWithdrawal ,
payment : {
. . . commonTransaction ,
2021-06-08 14:17:12 +02:00
amountEffective : 'USD:11' ,
2021-06-03 06:07:29 +02:00
type : TransactionType . Payment ,
info : {
contractTermsHash : 'ASDZXCASD' ,
merchant : {
name : 'the merchant' ,
} ,
2021-06-21 01:37:35 +02:00
orderId : '2021.167-03NPY6MCYMVGT' ,
2021-06-03 06:07:29 +02:00
products : [ ] ,
summary : 'the summary' ,
fulfillmentMessage : '' ,
} ,
2021-06-04 15:46:47 +02:00
proposalId : '1EMJJH8EP1NX3XF7733NCYS2DBEJW4Q2KA5KEB37MCQJQ8Q5HMC0' ,
2021-06-03 06:07:29 +02:00
status : PaymentStatus.Accepted ,
} as TransactionPayment ,
deposit : {
. . . commonTransaction ,
type : TransactionType . Deposit ,
depositGroupId : '#groupId' ,
targetPaytoUri : 'payto://x-taler-bank/bank/account' ,
} as TransactionDeposit ,
refresh : {
. . . commonTransaction ,
type : TransactionType . Refresh ,
exchangeBaseUrl : 'http://exchange.taler' ,
} as TransactionRefresh ,
tip : {
. . . commonTransaction ,
type : TransactionType . Tip ,
merchantBaseUrl : 'http://merchant.taler' ,
} as TransactionTip ,
refund : {
. . . commonTransaction ,
type : TransactionType . Refund ,
2021-06-04 15:46:47 +02:00
refundedTransactionId : 'payment:1EMJJH8EP1NX3XF7733NCYS2DBEJW4Q2KA5KEB37MCQJQ8Q5HMC0' ,
2021-06-03 06:07:29 +02:00
info : {
contractTermsHash : 'ASDZXCASD' ,
merchant : {
name : 'the merchant' ,
} ,
2021-06-21 01:37:35 +02:00
orderId : '2021.167-03NPY6MCYMVGT' ,
2021-06-03 06:07:29 +02:00
products : [ ] ,
summary : 'the summary' ,
fulfillmentMessage : '' ,
} ,
} as TransactionRefund ,
}
2021-06-16 23:21:03 +02:00
function createExample < Props > ( Component : FunctionalComponent < Props > , props : Partial < Props > ) {
2021-06-03 06:07:29 +02:00
const r = ( args : any ) = > < Component { ...args } / >
r . args = props
return r
}
2021-06-21 01:37:35 +02:00
export const NotYetLoaded = createExample ( TestedComponent , { } ) ;
2021-06-03 06:07:29 +02:00
2021-06-21 01:37:35 +02:00
export const Withdraw = createExample ( TestedComponent , {
2021-06-03 06:07:29 +02:00
transaction : exampleData.withdraw
} ) ;
2021-06-21 01:37:35 +02:00
export const WithdrawPending = createExample ( TestedComponent , {
2021-06-03 06:07:29 +02:00
transaction : { . . . exampleData . withdraw , pending : true } ,
} ) ;
2021-06-21 01:37:35 +02:00
export const Payment = createExample ( TestedComponent , {
2021-06-03 06:07:29 +02:00
transaction : exampleData.payment
} ) ;
2021-06-21 01:37:35 +02:00
export const PaymentWithoutFee = createExample ( TestedComponent , {
transaction : {
. . . exampleData . payment ,
amountRaw : 'USD:11' ,
}
} ) ;
export const PaymentPending = createExample ( TestedComponent , {
2021-06-03 06:07:29 +02:00
transaction : { . . . exampleData . payment , pending : true } ,
} ) ;
2021-06-21 01:37:35 +02:00
export const PaymentWithProducts = createExample ( TestedComponent , {
2021-06-03 06:07:29 +02:00
transaction : {
. . . exampleData . payment ,
info : {
. . . exampleData . payment . info ,
2021-06-21 01:37:35 +02:00
summary : 'this order has 5 products' ,
2021-06-03 06:07:29 +02:00
products : [ {
description : 't-shirt' ,
2021-06-21 01:37:35 +02:00
unit : 'shirts' ,
quantity : 1 ,
} , {
description : 't-shirt' ,
unit : 'shirts' ,
quantity : 1 ,
} , {
description : 'e-book' ,
} , {
description : 'beer' ,
unit : 'pint' ,
quantity : 15 ,
} , {
description : 'beer' ,
unit : 'pint' ,
quantity : 15 ,
} ]
}
} as TransactionPayment ,
} ) ;
export const PaymentWithLongSummary = createExample ( TestedComponent , {
transaction : {
. . . exampleData . payment ,
info : {
. . . exampleData . payment . info ,
summary : 'this is a very long summary that will occupy severals lines, this is a very long summary that will occupy severals lines, this is a very long summary that will occupy severals lines, this is a very long summary that will occupy severals lines, ' ,
products : [ {
description : 'an xl sized t-shirt with some drawings on it, color pink' ,
unit : 'shirts' ,
quantity : 1 ,
2021-06-03 06:07:29 +02:00
} , {
description : 'beer' ,
2021-06-21 01:37:35 +02:00
unit : 'pint' ,
quantity : 15 ,
2021-06-03 06:07:29 +02:00
} ]
}
} as TransactionPayment ,
} ) ;
2021-06-21 01:37:35 +02:00
export const Deposit = createExample ( TestedComponent , {
2021-06-03 06:07:29 +02:00
transaction : exampleData.deposit
} ) ;
2021-06-21 01:37:35 +02:00
export const DepositPending = createExample ( TestedComponent , {
2021-06-03 06:07:29 +02:00
transaction : { . . . exampleData . deposit , pending : true }
} ) ;
2021-06-21 01:37:35 +02:00
export const Refresh = createExample ( TestedComponent , {
2021-06-03 06:07:29 +02:00
transaction : exampleData.refresh
} ) ;
2021-06-21 01:37:35 +02:00
export const Tip = createExample ( TestedComponent , {
2021-06-03 06:07:29 +02:00
transaction : exampleData.tip
} ) ;
2021-06-21 01:37:35 +02:00
export const TipPending = createExample ( TestedComponent , {
2021-06-03 06:07:29 +02:00
transaction : { . . . exampleData . tip , pending : true }
} ) ;
2021-06-21 01:37:35 +02:00
export const Refund = createExample ( TestedComponent , {
2021-06-03 06:07:29 +02:00
transaction : exampleData.refund
} ) ;
2021-06-21 01:37:35 +02:00
export const RefundPending = createExample ( TestedComponent , {
2021-06-08 21:01:41 +02:00
transaction : { . . . exampleData . refund , pending : true }
2021-06-03 06:07:29 +02:00
} ) ;
2021-06-21 01:37:35 +02:00
export const RefundWithProducts = createExample ( TestedComponent , {
2021-06-03 06:07:29 +02:00
transaction : {
. . . exampleData . refund ,
info : {
. . . exampleData . refund . info ,
products : [ {
description : 't-shirt' ,
} , {
description : 'beer' ,
} ]
}
} as TransactionRefund ,
} ) ;