From 71986249e5b4e7a9bdf063d4d29571b9caa277f2 Mon Sep 17 00:00:00 2001
From: Jannis R
Date: Tue, 15 Nov 2016 13:26:14 +0100
Subject: [PATCH] sms verification: make GatherData component dumb
---
.../SMSVerification/GatherData/gatherData.js | 114 +++---------------
1 file changed, 17 insertions(+), 97 deletions(-)
diff --git a/js/src/modals/SMSVerification/GatherData/gatherData.js b/js/src/modals/SMSVerification/GatherData/gatherData.js
index 24c32aa3a..c89263bd9 100644
--- a/js/src/modals/SMSVerification/GatherData/gatherData.js
+++ b/js/src/modals/SMSVerification/GatherData/gatherData.js
@@ -15,56 +15,33 @@
// along with Parity. If not, see .
import React, { Component, PropTypes } from 'react';
+import BigNumber from 'bignumber.js';
import { Checkbox } from 'material-ui';
import InfoIcon from 'material-ui/svg-icons/action/info-outline';
import SuccessIcon from 'material-ui/svg-icons/navigation/check';
import ErrorIcon from 'material-ui/svg-icons/navigation/close';
-import phone from 'phoneformat.js';
-
import { fromWei } from '../../../api/util/wei';
import { Form, Input } from '../../../ui';
-import checkIfVerified from '../check-if-verified';
-import checkIfRequested from '../check-if-requested';
import terms from '../terms-of-service';
import styles from './gatherData.css';
+const nullable = (type) => PropTypes.oneOfType([ PropTypes.oneOf([ null ]), type ]);
+
export default class GatherData extends Component {
- static contextTypes = {
- api: PropTypes.object.isRequired
- }
-
static propTypes = {
- account: PropTypes.string.isRequired,
- contract: PropTypes.object.isRequired,
- data: PropTypes.object.isRequired,
- onData: PropTypes.func.isRequired,
- onDataIsValid: PropTypes.func.isRequired,
- onDataIsInvalid: PropTypes.func.isRequired
- }
-
- state = {
- init: true,
- numberIsValid: null,
- consentGiven: false
- };
-
- componentWillMount () {
- const { init } = this.state;
- if (init) {
- this.setState({ init: false });
- this.queryFee();
- this.checkIfCertified();
- this.checkIfRequested();
- }
+ fee: React.PropTypes.instanceOf(BigNumber),
+ isNumberValid: PropTypes.bool.isRequired,
+ isVerified: nullable(PropTypes.bool.isRequired),
+ hasRequested: nullable(PropTypes.bool.isRequired),
+ setNumber: PropTypes.func.isRequired,
+ setConsentGiven: PropTypes.func.isRequired
}
render () {
- const { numberIsValid } = this.state;
- const { isVerified } = this.props.data;
+ const { isNumberValid, isVerified } = this.props;
- // TODO: proper legal text
return (
);
@@ -110,7 +87,7 @@ export default class GatherData extends Component {
}
renderCertified () {
- const { isVerified } = this.props.data;
+ const { isVerified } = this.props;
if (isVerified) {
return (
@@ -132,7 +109,7 @@ export default class GatherData extends Component {
}
renderRequested () {
- const { isVerified, hasRequested } = this.props.data;
+ const { isVerified, hasRequested } = this.props;
// If the account is verified, don't show that it has requested verification.
if (isVerified) {
@@ -158,72 +135,15 @@ export default class GatherData extends Component {
return (Checking if you requested verificationā¦
);
}
- queryFee = () => {
- const { contract, onData } = this.props;
-
- contract.instance.fee.call()
- .then((fee) => {
- onData({ fee });
- this.onChange();
- })
- .catch((err) => {
- console.error('error fetching fee', err);
- this.onChange();
- });
- }
-
- checkIfCertified = () => {
- const { account, contract, onData } = this.props;
-
- checkIfVerified(contract, account)
- .then((isVerified) => {
- onData({ isVerified });
- this.onChange();
- })
- .catch((err) => {
- console.error('error checking if certified', err);
- });
- }
-
- checkIfRequested = () => {
- const { account, contract, onData } = this.props;
-
- checkIfRequested(contract, account)
- .then((hasRequested) => {
- onData({ hasRequested });
- this.onChange();
- })
- .catch((err) => {
- console.error('error checking if requested', err);
- });
- }
-
numberOnSubmit = (value) => {
- this.numberOnChange(null, value);
- this.props.onData({ number: value });
+ this.props.setNumber(value);
}
numberOnChange = (_, value) => {
- this.setState({
- numberIsValid: phone.isValidNumber(value)
- }, this.onChange);
+ this.props.setNumber(value);
}
consentOnChange = (_, consentGiven) => {
- this.setState({
- consentGiven: !!consentGiven
- }, this.onChange);
- this.props.onData({ consent: consentGiven });
- }
-
- onChange = () => {
- const { fee, isVerified } = this.props.data;
- const { numberIsValid, consentGiven } = this.state;
-
- if (fee && numberIsValid && consentGiven && isVerified === false) {
- this.props.onDataIsValid();
- } else {
- this.props.onDataIsInvalid();
- }
+ this.props.setConsentGiven(consentGiven);
}
}