MyCrypto/common/reducers/deterministicWallets.ts
HenryNguyen5 8fe664c171 Replace bignumber.js with bn.js (#319)
* Add definition file for bn.js

* Remove types-bn

* make isBN a static property

* progress commit -- swap out bignumber.js for bn.js

* Swap out bignumber for bn in vendor

* Change modn to number return

* Start to strip out units lib for a string manipulation based lib

* Convert codebase to only base units

* Get rid of useless component

* Handle only wei in values

* Use unit conversion in sidebar

* Automatically strip hex prefix, and  handle decimal edge case

* Handle base 16 wei in transactions

* Make a render callback component for dealing with unit conversion

* Switch contracts to use bn.js, and get transaction values from signedTx instead of state

* Get send transaction  working with bn.js

* Remove redundant hex stripping,  return base value of tokens

* Cleanup unit file

* Re-implement toFixed for strings

* Use formatNumber in codebase

* Cleanup code

* Undo package test changes

* Update snapshot and remove console logs

* Use TokenValue / Wei more consistently where applicable

* Add typing to deterministicWallets, fix confirmation modal, make UnitDisplay more flexible

* Clean up prop handling in UnitDisplay

* Change instanceof to typeof check, change boolean of displayBalance

* Fix tsc errors

* Fix token row displaying wrong decimals

* Fix deterministic modal token display

* Handle hex and non hex strings automatically in BN conversion

* Fix handling of strings and numbers for BN

* add web3 fixes & comments

* Display short balances on deterministic modals

* add more tests, fix rounding

* Add spacer to balance sidebar network name

* Fix tsc error
2017-11-12 11:45:52 -08:00

60 lines
1.2 KiB
TypeScript

import {
DeterministicWalletAction,
DeterministicWalletData
} from 'actions/deterministicWallets';
import { TypeKeys } from 'actions/deterministicWallets/constants';
export interface State {
wallets: DeterministicWalletData[];
desiredToken: string | undefined;
}
export const INITIAL_STATE: State = {
wallets: [],
desiredToken: ''
};
export function deterministicWallets(
state: State = INITIAL_STATE,
action: DeterministicWalletAction
): State {
switch (action.type) {
case TypeKeys.DW_SET_WALLETS:
return {
...state,
wallets: action.payload
};
case TypeKeys.DW_SET_DESIRED_TOKEN:
return {
...state,
desiredToken: action.payload
};
case TypeKeys.DW_UPDATE_WALLET:
return {
...state,
wallets: updateWalletValues(state.wallets, action.payload)
};
default:
return state;
}
}
function updateWalletValues(
wallets: DeterministicWalletData[],
newWallet: Partial<DeterministicWalletData>
) {
return wallets.map(w => {
if (w.address === newWallet.address) {
return {
...w,
...newWallet
};
}
return w;
});
}