diff --git a/src/actions/Web3Actions.js b/src/actions/Web3Actions.js index e1c1b73e..e72ecabb 100644 --- a/src/actions/Web3Actions.js +++ b/src/actions/Web3Actions.js @@ -39,6 +39,8 @@ export type Web3UpdateGasPriceAction = { export type Web3Action = { type: typeof WEB3.READY, +} | { + type: typeof WEB3.START, } | { type: typeof WEB3.CREATE, instance: Web3Instance diff --git a/src/services/Web3Service.js b/src/services/Web3Service.js new file mode 100644 index 00000000..996e9984 --- /dev/null +++ b/src/services/Web3Service.js @@ -0,0 +1,28 @@ +/* @flow */ + + +import TrezorConnect, { TRANSPORT } from 'trezor-connect'; +import * as WEB3 from 'actions/constants/web3'; + +import type { + Middleware, + MiddlewareAPI, + MiddlewareDispatch, + Action, +} from 'flowtype'; + +/** + * Middleware + */ +const Web3Service: Middleware = (api: MiddlewareAPI) => (next: MiddlewareDispatch) => (action: Action): Action => { + // pass action + next(action); + + if (action.type === WEB3.START) { + api.dispatch(WalletActions.clearUnavailableDevicesData(prevState, action.device)); + } + + return action; +}; + +export default Web3Service; \ No newline at end of file diff --git a/src/services/index.js b/src/services/index.js index b2ed5a5b..d8aef7c9 100644 --- a/src/services/index.js +++ b/src/services/index.js @@ -4,6 +4,7 @@ import RouterService from './RouterService'; import LocalStorageService from './LocalStorageService'; import CoinmarketcapService from './CoinmarketcapService'; import TrezorConnectService from './TrezorConnectService'; +import Web3Service from './Web3Service'; export default [ WalletService,