From f503c0899d9625c31bbdfe089e2487faa4dc7a4d Mon Sep 17 00:00:00 2001 From: Nikola Glumac Date: Mon, 1 Mar 2021 12:58:46 +0100 Subject: [PATCH] Fix send form issues, Bump Daedalus version --- CHANGELOG.md | 2 +- package.json | 2 +- .../app/components/wallet/WalletSendForm.js | 76 ++++++++++++++----- .../components/wallet/send-form/messages.js | 2 +- .../app/i18n/locales/defaultMessages.json | 2 +- 5 files changed, 61 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec1b65097c..f49509a56f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ Changelog ========= -## 4.0.0-RC1 +## 4.0.0-FC1 ### Features diff --git a/package.json b/package.json index a870eb67a1..0aac896f75 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "daedalus", "productName": "Daedalus", - "version": "4.0.0-RC1", + "version": "4.0.0-FC1", "description": "Cryptocurrency Wallet", "main": "./dist/main/index.js", "scripts": { diff --git a/source/renderer/app/components/wallet/WalletSendForm.js b/source/renderer/app/components/wallet/WalletSendForm.js index 371e1eefa2..197e92d453 100755 --- a/source/renderer/app/components/wallet/WalletSendForm.js +++ b/source/renderer/app/components/wallet/WalletSendForm.js @@ -1,9 +1,10 @@ // @flow import React, { Component, Fragment } from 'react'; import type { Node } from 'react'; +import type { Field } from 'mobx-react-form'; import { observer } from 'mobx-react'; import { intlShape } from 'react-intl'; -import { filter, findIndex, get, omit, orderBy, map, without } from 'lodash'; +import { filter, get, indexOf, omit, orderBy, map, without } from 'lodash'; import BigNumber from 'bignumber.js'; import classNames from 'classnames'; import SVGInline from 'react-svg-inline'; @@ -71,12 +72,23 @@ type Props = { }; type State = { - formFields: Object, + formFields: { + receiver: { + receiver: Field, + adaAmount: Field, + assetFields: { + [fingerprint: string]: Field, + }, + assetsDropdown: { + [fingerprint: string]: Field, + }, + }, + }, minimumAda: BigNumber, feeCalculationRequestQue: number, transactionFee: BigNumber, transactionFeeError: ?string | ?Node, - showRemoveAssetButton: { [key: string]: boolean }, + showRemoveAssetButton: { [fingerprint: string]: boolean }, selectedAssetFingerprints: Array, isResetButtonDisabled: boolean, isReceiverAddressValid: boolean, @@ -170,6 +182,25 @@ export default class WalletSendForm extends Component { return allAssets.find((asset) => asset.fingerprint === fingerprint); }; + focusableFields: { + [fingerprint: string]: Field, + } = {}; + + addFocusableField = (field: ?Field) => { + if (field) { + const { name: fieldName } = field.props; + this.focusableFields[fieldName] = field; + } + }; + + focusField = (field: Field) => { + const { name: fieldName } = field; + const focusableField = this.focusableFields[fieldName]; + if (focusableField) { + focusableField.focus(); + } + }; + handleSubmitOnEnter = submitOnEnter.bind(this, this.handleOnSubmit); handleOnSubmit = () => { @@ -205,6 +236,7 @@ export default class WalletSendForm extends Component { if (receiverField) { receiverField.clear(); this.setReceiverValidity(false); + this.focusField(receiverField); } }; @@ -215,14 +247,15 @@ export default class WalletSendForm extends Component { } }; - clearAssetFieldValue = (assetField: any) => { + clearAssetFieldValue = (assetField: Field) => { if (assetField) { assetField.clear(); + this.focusField(assetField); } this.resetTransactionFee(); }; - updateFormFields = (resetFormFields: boolean, fingerprint?: ?string) => { + updateFormFields = (resetFormFields: boolean, fingerprint?: string) => { const formFields = this.form.fields; const receiverField = formFields.get('receiver'); const adaAmountField = formFields.get('adaAmount'); @@ -238,17 +271,15 @@ export default class WalletSendForm extends Component { }, }, }); - } else { + } else if (fingerprint) { const { assetFields, assetsDropdown } = this.state.formFields.receiver; - const assetField = fingerprint - ? formFields.get(`asset_${fingerprint}`) - : null; + const assetField = formFields.get(`asset_${fingerprint}`); if (assetField) { assetFields[fingerprint] = assetField; } - const assetsDropdownField = fingerprint - ? formFields.get(`assetsDropdown_${fingerprint}`) - : null; + const assetsDropdownField = formFields.get( + `assetsDropdown_${fingerprint}` + ); if (assetsDropdownField) { assetsDropdown[fingerprint] = assetsDropdownField; } @@ -270,7 +301,7 @@ export default class WalletSendForm extends Component { return receiverField.value.length > 0; }; - hasAssetValue = (asset: any) => { + hasAssetValue = (asset: Field) => { return get(asset, 'value', false); }; @@ -316,7 +347,7 @@ export default class WalletSendForm extends Component { ], }, adaAmount: { - label: `${this.context.intl.formatMessage(messages.assetAdaLabel)}`, + label: this.context.intl.formatMessage(messages.adaAmountLabel), placeholder: `0${ this.getCurrentNumberFormat().decimalSeparator }${'0'.repeat(this.props.currencyMaxFractionalDigits)}`, @@ -615,7 +646,7 @@ export default class WalletSendForm extends Component { this.addAssetFields(newFingerprint); this.updateFormFields(false, newFingerprint); let { selectedAssetFingerprints } = this.state; - const index = findIndex(selectedAssetFingerprints, oldFingerprint); + const index = indexOf(selectedAssetFingerprints, oldFingerprint); if (index > -1) { selectedAssetFingerprints = selectedAssetFingerprints.splice( index, @@ -629,7 +660,6 @@ export default class WalletSendForm extends Component { selectedAssetFingerprints, }); this.removeAssetRow(oldFingerprint); - this.state.formFields.receiver.assetFields[newFingerprint].focus(); }; renderReceiverRow = (): Node => { @@ -674,9 +704,11 @@ export default class WalletSendForm extends Component {
{ + this.addFocusableField(field); + }} + className="receiver" error={receiverField.error} onChange={(value) => { receiverField.onChange(value || ''); @@ -728,9 +760,11 @@ export default class WalletSendForm extends Component {
{ + this.addFocusableField(field); + }} className="adaAmount" value={adaAmountField.value} - label={`${intl.formatMessage(messages.assetAdaLabel)}`} bigNumberFormat={this.getCurrentNumberFormat()} decimalPlaces={currencyMaxFractionalDigits} numberLocaleOptions={{ @@ -743,6 +777,7 @@ export default class WalletSendForm extends Component { error={adaAmountField.error || transactionFeeError} onKeyPress={this.handleSubmitOnEnter} allowSigns={false} + autoFocus />
@@ -809,6 +844,9 @@ export default class WalletSendForm extends Component { )} { + this.addFocusableField(field); + }} placeholder={ decimals ? `0${ diff --git a/source/renderer/app/components/wallet/send-form/messages.js b/source/renderer/app/components/wallet/send-form/messages.js index 59702a977a..041729aacf 100644 --- a/source/renderer/app/components/wallet/send-form/messages.js +++ b/source/renderer/app/components/wallet/send-form/messages.js @@ -29,7 +29,7 @@ export default defineMessages({ defaultMessage: '!!!Token', description: 'Label for the "Token" number input in the wallet send form.', }, - assetAdaLabel: { + adaAmountLabel: { id: 'wallet.send.form.asset.adaLabel', defaultMessage: '!!!Ada', description: 'Label for the "Ada" input in the wallet send form.', diff --git a/source/renderer/app/i18n/locales/defaultMessages.json b/source/renderer/app/i18n/locales/defaultMessages.json index 90eb011867..3d4f41dfab 100644 --- a/source/renderer/app/i18n/locales/defaultMessages.json +++ b/source/renderer/app/i18n/locales/defaultMessages.json @@ -9918,7 +9918,7 @@ "file": "source/renderer/app/components/wallet/send-form/messages.js", "id": "wallet.send.form.asset.adaLabel", "start": { - "column": 17, + "column": 18, "line": 32 } },