MyCrypto/common/libs/values.ts
HenryNguyen5 01fc5f1a89 Move Nodes/Networks to Redux (#961)
* Start splitting networks into their own reducers

* Split out nodes and networks into their own reducers

* Cleanup file structure

* Make selectors for new state

* Change custom network typing

* re-type repo

* Fix up components to use selectors, work on fixing sagas

* Provide consistency in naming, fix more sagas

* Get non web3 node switching working

* Split config rehydration off into a different file for store

* Inline auth for custom nodes

* Include typing for app state

* moar selectors

* Get web3 working + cleanup sagas

* Cleanup tsc errors

* Use forof loop instead of foreach for clearing pruning custom networks

* Add reducer tests for new redux state

* Export needed variables

* Add console error

* Remove old comment

* Work on saga tests

* Get passing existing saga tests

* Fix more tests

* Remove irrlevant tests

* add console error

* Get rest of tests passing

* Fix merge errors

* Remove random text

* Fix store saving

* Fix selector lib only grabbing from static nodes

* Fix custom node removal crashing app

* Infer selected network via node

* Prune custom networks properly on node removal

* Infer network name from chainid from selecting state

* Cleanup tsc errors

* Remove MEW nodes for main and testnet
2018-02-12 14:43:07 -06:00

61 lines
1.6 KiB
TypeScript

import { Wei, toTokenBase } from 'libs/units';
import { addHexPrefix } from 'ethereumjs-util';
import BN from 'bn.js';
export function stripHexPrefix(value: string) {
return value.replace('0x', '');
}
export function stripHexPrefixAndLower(value: string): string {
return stripHexPrefix(value).toLowerCase();
}
export function toHexWei(weiString: string): string {
return addHexPrefix(Wei(weiString).toString(16));
}
export function padLeftEven(hex: string) {
return hex.length % 2 !== 0 ? `0${hex}` : hex;
}
export function sanitizeHex(hex: string) {
const hexStr = hex.substring(0, 2) === '0x' ? hex.substring(2) : hex;
return hex !== '' ? `0x${padLeftEven(hexStr)}` : '';
}
export const buildEIP681EtherRequest = (
recipientAddr: string,
chainId: number,
etherValue: { raw: string; value: Wei | '' }
) => `ethereum:${recipientAddr}${chainId !== 1 ? `@${chainId}` : ''}?value=${etherValue.raw}e18`;
export const buildEIP681TokenRequest = (
recipientAddr: string,
contractAddr: string,
chainId: number,
tokenValue: { raw: string; value: Wei | '' },
decimal: number,
gasLimit: { raw: string; value: BN | null }
) =>
`ethereum:${contractAddr}${
chainId !== 1 ? `@${chainId}` : ''
}/transfer?address=${recipientAddr}&uint256=${toTokenBase(tokenValue.raw, decimal)}&gas=${
gasLimit.raw
}`;
export const sanitizeNumericalInput = (input: string): string => {
const inputFloat = parseFloat(input);
if (!input || isNaN(inputFloat)) {
return input;
}
// limit input field decrement to 0
if (inputFloat === -1) {
return '0';
}
// convert negative values to positive
return Math.abs(inputFloat).toString();
};