From 06ec28c0b5e1b69123f0946ee3e295b0e0a9d019 Mon Sep 17 00:00:00 2001
From: AIS <abdulov001@gmail.com>
Date: Mon, 25 Dec 2017 16:28:14 +0300
Subject: [PATCH] Added auto-select first of tokens list and sort tokens list

---
 .../DepositTokens/DepositTokensForm.jsx       | 25 +++++++++++++------
 .../dashboard/SendTokens/SendTokensForm.jsx   | 23 +++++++++++------
 2 files changed, 32 insertions(+), 16 deletions(-)

diff --git a/src/components/dashboard/DepositTokens/DepositTokensForm.jsx b/src/components/dashboard/DepositTokens/DepositTokensForm.jsx
index 12373066c..a31067c19 100644
--- a/src/components/dashboard/DepositTokens/DepositTokensForm.jsx
+++ b/src/components/dashboard/DepositTokens/DepositTokensForm.jsx
@@ -17,7 +17,7 @@ import React, { PureComponent } from 'react'
 import { connect } from 'react-redux'
 import { Translate } from 'react-redux-i18n'
 import { SelectField, TextField } from 'redux-form-material-ui'
-import { Field, formPropTypes, formValueSelector, reduxForm } from 'redux-form/immutable'
+import { change, Field, formPropTypes, formValueSelector, reduxForm } from 'redux-form/immutable'
 import { DUCK_ASSETS_HOLDER } from 'redux/assetsHolder/actions'
 import { DUCK_MAIN_WALLET, mainApprove, requireTIME } from 'redux/mainWallet/actions'
 import { DUCK_SESSION } from 'redux/session/actions'
@@ -100,6 +100,13 @@ export default class DepositTokensForm extends PureComponent {
     ...formPropTypes,
   }
 
+  componentWillReceiveProps (newProps) {
+    const firstAsset = newProps.assets.first()
+    if (!newProps.token.isFetched() && firstAsset) {
+      this.props.dispatch(change(FORM_DEPOSIT_TOKENS, 'symbol', firstAsset.symbol()))
+    }
+  }
+
   handleApproveAsset = (values) => {
     this.props.onSubmit(values
       .set('action', ACTION_APPROVE)
@@ -170,13 +177,15 @@ export default class DepositTokensForm extends PureComponent {
                     fullWidth
                     {...styles}
                   >
-                    {assets.items().map((item) => (
-                      <MenuItem
-                        key={item.id()}
-                        value={item.symbol()}
-                        primaryText={item.symbol()}
-                      />
-                    ))}
+                    {assets
+                      .sortBy(balance => balance.symbol())
+                      .map((item) => (
+                        <MenuItem
+                          key={item.id()}
+                          value={item.symbol()}
+                          primaryText={item.symbol()}
+                        />
+                      ))}
                   </Field>
                 )
               }
diff --git a/src/components/dashboard/SendTokens/SendTokensForm.jsx b/src/components/dashboard/SendTokens/SendTokensForm.jsx
index faea94c96..8e2cc6bb3 100644
--- a/src/components/dashboard/SendTokens/SendTokensForm.jsx
+++ b/src/components/dashboard/SendTokens/SendTokensForm.jsx
@@ -15,7 +15,7 @@ import React, { PureComponent } from 'react'
 import { connect } from 'react-redux'
 import { Translate } from 'react-redux-i18n'
 import { SelectField, Slider, TextField } from 'redux-form-material-ui'
-import { Field, formPropTypes, formValueSelector, reduxForm } from 'redux-form/immutable'
+import { change, Field, formPropTypes, formValueSelector, reduxForm } from 'redux-form/immutable'
 import MainWallet from 'models/wallet/MainWalletModel'
 import { DUCK_MAIN_WALLET, getSpendersAllowance } from 'redux/mainWallet/actions'
 import AllowanceModel from 'models/wallet/AllowanceModel'
@@ -95,6 +95,11 @@ export default class SendTokensForm extends PureComponent {
     if ((newProps.token.address() !== this.props.token.address() || newProps.recipient !== this.props.recipient) && newProps.token.isERC20()) {
       this.props.dispatch(getSpendersAllowance(newProps.token.id(), newProps.recipient))
     }
+
+    const firstBalance = newProps.wallet.balances().first()
+    if (!newProps.token.isFetched() && firstBalance) {
+      this.props.dispatch(change(FORM_SEND_TOKENS, 'symbol', firstBalance.id()))
+    }
   }
 
   checkIsContract (address): Promise {
@@ -148,13 +153,15 @@ export default class SendTokensForm extends PureComponent {
                   fullWidth
                   {...styles}
                 >
-                  {balances.items().map((balance) => (
-                    <MenuItem
-                      key={balance.id()}
-                      value={balance.id()}
-                      primaryText={balance.symbol()}
-                    />
-                  ))}
+                  {balances
+                    .sortBy(balance => balance.symbol())
+                    .map((balance) => (
+                      <MenuItem
+                        key={balance.id()}
+                        value={balance.id()}
+                        primaryText={balance.symbol()}
+                      />
+                    ))}
                 </Field>
               )
             }