aboutsummaryrefslogtreecommitdiffstats
path: root/packages/website/ts
diff options
context:
space:
mode:
authorBrandon Millman <brandon.millman@gmail.com>2018-03-22 03:57:16 +0800
committerBrandon Millman <brandon.millman@gmail.com>2018-03-22 04:02:44 +0800
commit4e5cd472c2b784ca2314eea76b1a106fd04ef0ad (patch)
tree8a46e656ee6598461ce4b7f5e156b02a51a83148 /packages/website/ts
parent3cf2cb89bbec6a2cffd59aafdcb6d45aa55269d1 (diff)
downloaddexon-0x-contracts-4e5cd472c2b784ca2314eea76b1a106fd04ef0ad.tar.gz
dexon-0x-contracts-4e5cd472c2b784ca2314eea76b1a106fd04ef0ad.tar.zst
dexon-0x-contracts-4e5cd472c2b784ca2314eea76b1a106fd04ef0ad.zip
Refactor TokenState type
Diffstat (limited to 'packages/website/ts')
-rw-r--r--packages/website/ts/components/eth_wrappers.tsx59
-rw-r--r--packages/website/ts/components/token_balances.tsx9
-rw-r--r--packages/website/ts/components/wallet.tsx12
-rw-r--r--packages/website/ts/types.ts15
4 files changed, 40 insertions, 55 deletions
diff --git a/packages/website/ts/components/eth_wrappers.tsx b/packages/website/ts/components/eth_wrappers.tsx
index b12c637e5..59afeb50b 100644
--- a/packages/website/ts/components/eth_wrappers.tsx
+++ b/packages/website/ts/components/eth_wrappers.tsx
@@ -10,7 +10,14 @@ import ReactTooltip = require('react-tooltip');
import { Blockchain } from 'ts/blockchain';
import { EthWethConversionButton } from 'ts/components/eth_weth_conversion_button';
import { Dispatcher } from 'ts/redux/dispatcher';
-import { OutdatedWrappedEtherByNetworkId, Side, Token, TokenByAddress, TokenState } from 'ts/types';
+import {
+ OutdatedWrappedEtherByNetworkId,
+ Side,
+ Token,
+ TokenByAddress,
+ TokenState,
+ TokenStateByAddress,
+} from 'ts/types';
import { configs } from 'ts/utils/configs';
import { constants } from 'ts/utils/constants';
import { utils } from 'ts/utils/utils';
@@ -20,13 +27,6 @@ const ICON_DIMENSION = 40;
const ETHER_ICON_PATH = '/images/ether.png';
const OUTDATED_WETH_ICON_PATH = '/images/wrapped_eth_gray.png';
-interface OutdatedWETHAddressToIsStateLoaded {
- [address: string]: boolean;
-}
-interface OutdatedWETHStateByAddress {
- [address: string]: TokenState;
-}
-
interface EthWrappersProps {
networkId: number;
blockchain: Blockchain;
@@ -39,9 +39,7 @@ interface EthWrappersProps {
interface EthWrappersState {
ethTokenState: TokenState;
- isWethStateLoaded: boolean;
- outdatedWETHAddressToIsStateLoaded: OutdatedWETHAddressToIsStateLoaded;
- outdatedWETHStateByAddress: OutdatedWETHStateByAddress;
+ outdatedWETHStateByAddress: TokenStateByAddress;
}
export class EthWrappers extends React.Component<EthWrappersProps, EthWrappersState> {
@@ -50,22 +48,20 @@ export class EthWrappers extends React.Component<EthWrappersProps, EthWrappersSt
super(props);
this._isUnmounted = false;
const outdatedWETHAddresses = this._getOutdatedWETHAddresses();
- const outdatedWETHAddressToIsStateLoaded: OutdatedWETHAddressToIsStateLoaded = {};
- const outdatedWETHStateByAddress: OutdatedWETHStateByAddress = {};
+ const outdatedWETHStateByAddress: TokenStateByAddress = {};
_.each(outdatedWETHAddresses, outdatedWETHAddress => {
- outdatedWETHAddressToIsStateLoaded[outdatedWETHAddress] = false;
outdatedWETHStateByAddress[outdatedWETHAddress] = {
balance: new BigNumber(0),
allowance: new BigNumber(0),
+ isLoaded: false,
};
});
this.state = {
- outdatedWETHAddressToIsStateLoaded,
outdatedWETHStateByAddress,
- isWethStateLoaded: false,
ethTokenState: {
balance: new BigNumber(0),
allowance: new BigNumber(0),
+ isLoaded: false,
},
};
}
@@ -169,7 +165,7 @@ export class EthWrappers extends React.Component<EthWrappersProps, EthWrappersSt
{this._renderTokenLink(tokenLabel, etherscanUrl)}
</TableRowColumn>
<TableRowColumn>
- {this.state.isWethStateLoaded ? (
+ {this.state.ethTokenState.isLoaded ? (
`${wethBalance.toFixed(configs.AMOUNT_DISPLAY_PRECSION)} WETH`
) : (
<i className="zmdi zmdi-spinner zmdi-hc-spin" />
@@ -183,7 +179,7 @@ export class EthWrappers extends React.Component<EthWrappersProps, EthWrappersSt
networkId={this.props.networkId}
isOutdatedWrappedEther={false}
direction={Side.Receive}
- isDisabled={!this.state.isWethStateLoaded}
+ isDisabled={!this.state.ethTokenState.isLoaded}
ethToken={etherToken}
dispatcher={this.props.dispatcher}
blockchain={this.props.blockchain}
@@ -266,8 +262,8 @@ export class EthWrappers extends React.Component<EthWrappersProps, EthWrappersSt
...etherToken,
address: outdatedWETHIfExists.address,
};
- const isStateLoaded = this.state.outdatedWETHAddressToIsStateLoaded[outdatedWETHIfExists.address];
const outdatedEtherTokenState = this.state.outdatedWETHStateByAddress[outdatedWETHIfExists.address];
+ const isStateLoaded = outdatedEtherTokenState.isLoaded;
const balanceInEthIfExists = isStateLoaded
? ZeroEx.toUnitAmount(outdatedEtherTokenState.balance, constants.DECIMAL_PLACES_ETH).toFixed(
configs.AMOUNT_DISPLAY_PRECSION,
@@ -345,10 +341,15 @@ export class EthWrappers extends React.Component<EthWrappersProps, EthWrappersSt
);
}
private async _onOutdatedConversionSuccessfulAsync(outdatedWETHAddress: string) {
+ const currentOutdatedWETHState = this.state.outdatedWETHStateByAddress[outdatedWETHAddress];
this.setState({
- outdatedWETHAddressToIsStateLoaded: {
- ...this.state.outdatedWETHAddressToIsStateLoaded,
- [outdatedWETHAddress]: false,
+ outdatedWETHStateByAddress: {
+ ...this.state.outdatedWETHStateByAddress,
+ [outdatedWETHAddress]: {
+ balance: currentOutdatedWETHState.balance,
+ allowance: currentOutdatedWETHState.allowance,
+ isLoaded: false,
+ },
},
});
const userAddressIfExists = _.isEmpty(this.props.userAddress) ? undefined : this.props.userAddress;
@@ -357,15 +358,12 @@ export class EthWrappers extends React.Component<EthWrappersProps, EthWrappersSt
outdatedWETHAddress,
);
this.setState({
- outdatedWETHAddressToIsStateLoaded: {
- ...this.state.outdatedWETHAddressToIsStateLoaded,
- [outdatedWETHAddress]: true,
- },
outdatedWETHStateByAddress: {
...this.state.outdatedWETHStateByAddress,
[outdatedWETHAddress]: {
balance,
allowance,
+ isLoaded: true,
},
},
});
@@ -380,8 +378,7 @@ export class EthWrappers extends React.Component<EthWrappersProps, EthWrappersSt
);
const outdatedWETHAddresses = this._getOutdatedWETHAddresses();
- const outdatedWETHAddressToIsStateLoaded: OutdatedWETHAddressToIsStateLoaded = {};
- const outdatedWETHStateByAddress: OutdatedWETHStateByAddress = {};
+ const outdatedWETHStateByAddress: TokenStateByAddress = {};
for (const address of outdatedWETHAddresses) {
const [balance, allowance] = await this.props.blockchain.getTokenBalanceAndAllowanceAsync(
userAddressIfExists,
@@ -390,18 +387,17 @@ export class EthWrappers extends React.Component<EthWrappersProps, EthWrappersSt
outdatedWETHStateByAddress[address] = {
balance,
allowance,
+ isLoaded: true,
};
- outdatedWETHAddressToIsStateLoaded[address] = true;
}
if (!this._isUnmounted) {
this.setState({
outdatedWETHStateByAddress,
- outdatedWETHAddressToIsStateLoaded,
ethTokenState: {
balance: wethBalance,
allowance: wethAllowance,
+ isLoaded: true,
},
- isWethStateLoaded: true,
});
}
}
@@ -434,6 +430,7 @@ export class EthWrappers extends React.Component<EthWrappersProps, EthWrappersSt
ethTokenState: {
balance,
allowance,
+ isLoaded: true,
},
});
}
diff --git a/packages/website/ts/components/token_balances.tsx b/packages/website/ts/components/token_balances.tsx
index 186393c4f..b4a710ef4 100644
--- a/packages/website/ts/components/token_balances.tsx
+++ b/packages/website/ts/components/token_balances.tsx
@@ -37,6 +37,7 @@ import {
ScreenWidths,
Token,
TokenByAddress,
+ TokenStateByAddress,
TokenVisibility,
} from 'ts/types';
import { configs } from 'ts/utils/configs';
@@ -61,14 +62,6 @@ const styles: Styles = {
},
};
-interface TokenStateByAddress {
- [address: string]: {
- balance: BigNumber;
- allowance: BigNumber;
- isLoaded: boolean;
- };
-}
-
interface TokenBalancesProps {
blockchain: Blockchain;
blockchainErr: BlockchainErrs;
diff --git a/packages/website/ts/components/wallet.tsx b/packages/website/ts/components/wallet.tsx
index 41c10c57a..4e7d0776e 100644
--- a/packages/website/ts/components/wallet.tsx
+++ b/packages/website/ts/components/wallet.tsx
@@ -20,7 +20,7 @@ import { AllowanceToggle } from 'ts/components/inputs/allowance_toggle';
import { Identicon } from 'ts/components/ui/identicon';
import { TokenIcon } from 'ts/components/ui/token_icon';
import { Dispatcher } from 'ts/redux/dispatcher';
-import { BalanceErrs, BlockchainErrs, Token, TokenByAddress } from 'ts/types';
+import { BalanceErrs, BlockchainErrs, Token, TokenByAddress, TokenState, TokenStateByAddress } from 'ts/types';
import { constants } from 'ts/utils/constants';
import { utils } from 'ts/utils/utils';
@@ -41,16 +41,6 @@ interface WalletState {
trackedTokenStateByAddress: TokenStateByAddress;
}
-interface TokenStateByAddress {
- [address: string]: TokenState;
-}
-
-interface TokenState {
- balance: BigNumber;
- allowance: BigNumber;
- isLoaded: boolean;
-}
-
enum WrappedEtherAction {
Wrap,
Unwrap,
diff --git a/packages/website/ts/types.ts b/packages/website/ts/types.ts
index b3e4973fa..c0a27a125 100644
--- a/packages/website/ts/types.ts
+++ b/packages/website/ts/types.ts
@@ -21,11 +21,6 @@ export interface TokenByAddress {
[address: string]: Token;
}
-export interface TokenState {
- allowance: BigNumber;
- balance: BigNumber;
-}
-
export interface AssetToken {
address?: string;
amount?: BigNumber;
@@ -469,4 +464,14 @@ export enum Providers {
Metamask = 'METAMASK',
Mist = 'MIST',
}
+
+export interface TokenStateByAddress {
+ [address: string]: TokenState;
+}
+
+export interface TokenState {
+ balance: BigNumber;
+ allowance: BigNumber;
+ isLoaded: boolean;
+}
// tslint:disable:max-file-line-count