OSDN Git Service

add the multi-address action for the normal transaction form.
authorZhiting Lin <zlin035@uottawa.ca>
Thu, 27 Sep 2018 09:25:25 +0000 (17:25 +0800)
committerZhiting Lin <zlin035@uottawa.ca>
Thu, 27 Sep 2018 09:25:25 +0000 (17:25 +0800)
src/features/transactions/actions.js
src/features/transactions/components/New/ConfirmModal/ConfirmModal.jsx
src/features/transactions/components/New/ConfirmModal/ConfirmModal.scss

index 1d48f62..8a25417 100644 (file)
@@ -20,6 +20,8 @@ function preprocessTransaction(formParams) {
 
   if (formParams.form === 'normalTx') {
     const gasPrice = formParams.state.estimateGas * Number(formParams.gasLevel)
+    const totalAmount = formParams.receivers.map(x => Number(x.amount)).reduce((prev, next) => prev + next)
+    const receivers = formParams.receivers
 
     builder.actions.push({
       accountAlias: formParams.accountAlias,
@@ -33,15 +35,18 @@ function preprocessTransaction(formParams) {
       accountId: formParams.accountId,
       assetAlias: formParams.assetAlias,
       assetId: formParams.assetId,
-      amount: formParams.amount,
+      amount: totalAmount,
       type: 'spend_account'
     })
-    builder.actions.push({
-      address: formParams.address,
-      assetAlias: formParams.assetAlias,
-      assetId: formParams.assetId,
-      amount: formParams.amount,
-      type: 'control_address'
+
+    receivers.forEach((receiver)=>{
+      builder.actions.push({
+        address: receiver.address,
+        assetAlias: formParams.assetAlias,
+        assetId: formParams.assetId,
+        amount: receiver.amount,
+        type: 'control_address'
+      })
     })
   }
 
index d795f8b..3409555 100644 (file)
@@ -18,7 +18,7 @@ class ConfirmModal extends Component {
 
   render() {
     const {
-      fields: { accountId, accountAlias, assetId, assetAlias, address, amount, password, gasLevel },
+      fields: { accountId, accountAlias, assetId, assetAlias, receivers, password, gasLevel },
       handleSubmit,
       submitting,
       cancel,
@@ -31,8 +31,10 @@ class ConfirmModal extends Component {
 
     const fee = Number(gasLevel.value * gas)
 
+    const totalAmount = receivers.map(x => Number(x.amount.value)).reduce((prev, next) => prev + next)
+
     const  Total = (assetAlias.value ==='BTM' ||assetId.value === btmID)?
-      (Number(amount.value) + fee): amount.value
+      (totalAmount + fee): totalAmount
 
     let submitLabel = lang === 'zh' ? '提交交易' : 'Submit transaction'
 
@@ -63,15 +65,16 @@ class ConfirmModal extends Component {
               <td> <span>{accountAlias.value || accountId.value}</span></td>
             </tr>
 
-            <tr>
-              <td className={styles.colLabel}>To</td>
-              <td> <span>{address.value}</span> </td>
-            </tr>
 
-            <tr>
-              <td className={styles.colLabel}>{lang === 'zh'? '数量':'Amount'}</td>
-              <td> <code>{normalize(amount.value, asset)} {unit}</code> </td>
-            </tr>
+            {receivers.map((receiver) =>
+             [<tr>
+                <td className={styles.colLabel}>To</td>
+                <td> <span>{receiver.address.value}</span> </td>
+              </tr>,
+              <tr>
+                <td className={styles.colLabel}>{lang === 'zh'? '数量':'Amount'}</td>
+                <td> <code>{normalize(receiver.amount.value, asset)} {unit}</code> </td>
+              </tr>])}
 
             <tr>
               <td className={styles.colLabel}>{lang === 'zh'?'手续费':'Fee'}</td>
@@ -137,11 +140,11 @@ export default  reduxForm({
   fields:[
     'accountAlias',
     'accountId',
-    'amount',
     'assetAlias',
     'assetId',
+    'receivers[].amount',
+    'receivers[].address',
     'gasLevel',
-    'address',
     'password'
   ],
   destroyOnUnmount: false,