Move MaybeBigNumber functions into helper

This commit is contained in:
Steve Klebanoff
2018-11-02 13:22:10 -07:00
parent f5623632d8
commit 620f439816
2 changed files with 29 additions and 17 deletions

View File

@@ -4,6 +4,7 @@ import * as React from 'react';
import { ColorOption } from '../style/theme';
import { MaybeBigNumber } from '../types';
import { maybeBigNumberUtil } from '../util/maybe_big_number';
import { util } from '../util/util';
import { ScalingInput } from './scaling_input';
@@ -21,23 +22,7 @@ interface ScalingAmountInputState {
stringValue: string;
}
const stringToMaybeBigNumber = (stringValue: string): MaybeBigNumber => {
let maybeBigNumber: MaybeBigNumber;
try {
maybeBigNumber = new BigNumber(stringValue);
} catch {
maybeBigNumber = undefined;
}
return _.isNaN(maybeBigNumber) ? undefined : maybeBigNumber;
};
const areMaybeBigNumbersEqual = (val1: MaybeBigNumber, val2: MaybeBigNumber): boolean => {
if (!_.isUndefined(val1) && !_.isUndefined(val2)) {
return val1.equals(val2);
}
return _.isUndefined(val1) && _.isUndefined(val2);
};
const { stringToMaybeBigNumber, areMaybeBigNumbersEqual } = maybeBigNumberUtil;
export class ScalingAmountInput extends React.Component<ScalingAmountInputProps, ScalingAmountInputState> {
public static defaultProps = {
onChange: util.boundNoop,
@@ -57,6 +42,8 @@ export class ScalingAmountInput extends React.Component<ScalingAmountInputProps,
if (!areMaybeBigNumbersEqual(parsedStateValue, currentValue)) {
// we somehow got into the state in which the value passed in and the string value
// in state have differed, reset state
// we dont expect to ever get into this state, but let's make sure
// we reset if we do since we're dealing with important numbers
this.setState({
stringValue: _.isUndefined(currentValue) ? '' : currentValue.toString(),
});

View File

@@ -0,0 +1,25 @@
import { BigNumber } from '@0x/utils';
import * as _ from 'lodash';
import { MaybeBigNumber } from '../types';
export const maybeBigNumberUtil = {
// converts a string to a MaybeBigNumber
// if string is a NaN, considered undefined
stringToMaybeBigNumber: (stringValue: string): MaybeBigNumber => {
let validBigNumber: BigNumber;
try {
validBigNumber = new BigNumber(stringValue);
} catch {
return undefined;
}
return validBigNumber.isNaN() ? undefined : validBigNumber;
},
areMaybeBigNumbersEqual: (val1: MaybeBigNumber, val2: MaybeBigNumber): boolean => {
if (!_.isUndefined(val1) && !_.isUndefined(val2)) {
return val1.equals(val2);
}
return _.isUndefined(val1) && _.isUndefined(val2);
},
};