OSDN Git Service

fixed the value error
[bytom/bytom-electron.git] / src / features / transactions / transactions.js
1 import { normalizeBTMAmountUnit, converIntToDec } from 'utility/buildInOutDisplay'
2 import { btmID } from 'utility/environment'
3 import { sum } from 'utility/math'
4
5 export const balance = (values, assetDecimal, balances, btmAmountUnit) => {
6   let filteredBalances = balances
7   if (values.accountAlias) {
8     filteredBalances = filteredBalances.filter(balance => balance.accountAlias === values.accountAlias)
9   }
10   if (values.accountId) {
11     filteredBalances = filteredBalances.filter(balance => balance.accountId === values.accountId)
12   }
13   if (values.assetAlias) {
14     filteredBalances = filteredBalances.filter(balance => balance.assetAlias === values.assetAlias)
15   }
16   if (values.assetId) {
17     filteredBalances = filteredBalances.filter(balance => balance.assetId === values.assetId)
18   }
19
20   if(filteredBalances.length === 1){
21     if (filteredBalances[0].assetId === btmID){
22       return normalizeBTMAmountUnit(filteredBalances[0].assetId, filteredBalances[0].amount, btmAmountUnit)
23     }else if( assetDecimal ){
24       return converIntToDec(filteredBalances[0].amount, assetDecimal)
25     }else{
26       return filteredBalances[0].amount
27     }
28   }else {
29     return null
30   }
31 }
32
33 export const getAssetDecimal = (values, asset) => {
34   let filteredAsset = asset
35   if (values.assetAlias.value) {
36     filteredAsset = filteredAsset.filter(asset => asset.alias === values.assetAlias.value)
37   }
38   if (values.assetId.value) {
39     filteredAsset = filteredAsset.filter(asset => asset.id === values.assetId.value)
40   }
41
42   return (filteredAsset.length === 1 && filteredAsset[0].definition && filteredAsset[0].id !== btmID ) ?
43     filteredAsset[0].definition.decimals : null
44 }
45
46 export const normalTxActionBuilder = (transaction, gas, prop) =>{
47   const accountAlias =  transaction.accountAlias
48   const accountId = transaction.accountId
49   const assetAlias = transaction.assetAlias
50   const assetId = transaction.assetId
51   const receivers = transaction.receivers
52
53   const totalAmount = sum(receivers, prop )
54
55   const spendAction = {
56     accountAlias,
57     accountId,
58     assetAlias,
59     assetId,
60     amount: totalAmount,
61     type: 'spend_account'
62   }
63
64   const gasAction = {
65     accountAlias,
66     accountId,
67     assetAlias: 'BTM',
68     amount: gas,
69     type: 'spend_account'
70   }
71
72   const actions = [spendAction, gasAction]
73   receivers.forEach((receiver)=>{
74     actions.push(
75       {
76         address: receiver.address,
77         assetAlias,
78         assetId,
79         amount: Number(receiver.amount),
80         type: 'control_address'
81       }
82     )
83   })
84
85   return actions
86 }
87
88 export const issueAssetTxActionBuilder = (transaction, gas,prop) =>{
89   const accountAlias = transaction.accountAlias
90   const accountId = transaction.accountId
91   const assetAlias = transaction.assetAlias
92   const assetId =  transaction.assetId
93   const receivers = transaction.receivers
94
95   const totalAmount = sum(receivers, prop )
96
97   const spendAction = {
98     assetAlias,
99     assetId,
100     amount: totalAmount,
101     type: 'issue'
102   }
103
104   const gasAction = {
105     accountAlias,
106     accountId,
107     assetAlias: 'BTM',
108     amount: gas,
109     type: 'spend_account'
110   }
111
112   const actions = [spendAction, gasAction]
113   receivers.forEach((receiver)=>{
114     actions.push(
115       {
116         address: receiver.address,
117         assetAlias,
118         assetId,
119         amount: Number(receiver.amount),
120         type: 'control_address'
121       }
122     )
123   })
124
125   return actions
126 }