You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
trezor-wallet/src/reducers/LocalStorageReducer.js

109 lines
2.1 KiB

/* @flow */
import * as STORAGE from 'actions/constants/localStorage';
import type { Action } from 'flowtype';
export type Network = {
type: string;
name: string;
testnet?: boolean;
shortcut: string;
symbol: string;
bip44: string;
defaultGasLimit: number;
defaultGasLimitTokens: number;
defaultGasPrice: number;
chainId: number;
explorer: {
tx: string;
address: string;
};
tokens: string;
decimals: number,
backends: Array<{
name: string;
urls: Array<string>;
}>;
web3: Array<string>;
}
export type NetworkToken = {
address: string,
name: string,
symbol: string,
decimals: number
}
export type TokensCollection = { [network: string]: Array<NetworkToken> };
// type AbiField = {
// constant: boolean,
// inputs: Array<{
// name: string,
// type: string,
// }>,
// name: string,
// outputs: Array<{
// name: string,
// type: string,
// }>,
// payable: boolean,
// stateMutability: string,
// type: string
// }
export type FiatValueTicker = {
network: string;
url: string;
}
export type Config = {
networks: Array<Network>;
fiatValueTickers: Array<FiatValueTicker>;
}
export type State = {
initialized: boolean;
error: ?string;
config: Config;
ERC20Abi: Array<Object>;
tokens: TokensCollection;
}
const initialState: State = {
initialized: false,
error: null,
config: {
networks: [],
fiatValueTickers: [],
},
ERC20Abi: [],
tokens: {},
};
export default function localStorage(state: State = initialState, action: Action): State {
switch (action.type) {
case STORAGE.READY:
return {
...state,
initialized: true,
config: action.config,
ERC20Abi: action.ERC20Abi,
tokens: action.tokens,
error: null,
};
case STORAGE.ERROR:
return {
...state,
error: action.error,
};
default:
return state;
}
}