mirror of
https://github.com/trezor/trezor-wallet
synced 2024-11-24 09:18:09 +00:00
added WalletService to middlewares
This commit is contained in:
parent
ed23b859a8
commit
e5bdadfcb2
@ -22,4 +22,4 @@ if (typeof module !== undefined && module.hasOwnProperty('hot')) {
|
|||||||
module.hot.accept();
|
module.hot.accept();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Application life cycle starts in ./services/LocalStorageService.js
|
// Application life cycle starts in ./services/WalletService.js
|
@ -89,14 +89,14 @@ const save = (dispatch: Dispatch, getState: GetState): void => {
|
|||||||
const LocalStorageService: Middleware = (api: MiddlewareAPI) => (next: MiddlewareDispatch) => (action: Action): Action => {
|
const LocalStorageService: Middleware = (api: MiddlewareAPI) => (next: MiddlewareDispatch) => (action: Action): Action => {
|
||||||
|
|
||||||
// Application live cycle starts here
|
// Application live cycle starts here
|
||||||
if (action.type === LOCATION_CHANGE) {
|
// if (action.type === LOCATION_CHANGE) {
|
||||||
const { location } = api.getState().router;
|
// const { location } = api.getState().router;
|
||||||
if (!location) {
|
// if (!location) {
|
||||||
api.dispatch( WalletActions.init() );
|
// api.dispatch( WalletActions.init() );
|
||||||
// load data from config.json and local storage
|
// // load data from config.json and local storage
|
||||||
api.dispatch( LocalStorageActions.loadData() );
|
// api.dispatch( LocalStorageActions.loadData() );
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
next(action);
|
next(action);
|
||||||
|
|
||||||
|
70
src/js/services/WalletService.js
Normal file
70
src/js/services/WalletService.js
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
/* @flow */
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
import { LOCATION_CHANGE } from 'react-router-redux';
|
||||||
|
import * as WALLET from '../actions/constants/wallet';
|
||||||
|
|
||||||
|
import * as WalletActions from '../actions/WalletActions';
|
||||||
|
import * as LocalStorageActions from '../actions/LocalStorageActions';
|
||||||
|
|
||||||
|
import type {
|
||||||
|
Middleware,
|
||||||
|
MiddlewareAPI,
|
||||||
|
MiddlewareDispatch,
|
||||||
|
State,
|
||||||
|
Dispatch,
|
||||||
|
Action,
|
||||||
|
GetState,
|
||||||
|
TrezorDevice,
|
||||||
|
} from '~/flowtype';
|
||||||
|
|
||||||
|
|
||||||
|
const getSelectedDevice = (state: State): ?TrezorDevice => {
|
||||||
|
const locationState = state.router.location.state;
|
||||||
|
if (!locationState.device) return null;
|
||||||
|
|
||||||
|
const instance: ?number = locationState.deviceInstance ? parseInt(locationState.deviceInstance) : undefined;
|
||||||
|
return state.connect.devices.find(d => d.features && d.features.device_id === locationState.device && d.instance === instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Middleware
|
||||||
|
*/
|
||||||
|
const WalletService: Middleware = (api: MiddlewareAPI) => (next: MiddlewareDispatch) => (action: Action): Action => {
|
||||||
|
|
||||||
|
const prevState = api.getState();
|
||||||
|
const locationChange: boolean = action.type === LOCATION_CHANGE;
|
||||||
|
|
||||||
|
// Application live cycle starts here
|
||||||
|
if (locationChange) {
|
||||||
|
const { location } = api.getState().router;
|
||||||
|
if (!location) {
|
||||||
|
api.dispatch( WalletActions.init() );
|
||||||
|
// load data from config.json and local storage
|
||||||
|
api.dispatch( LocalStorageActions.loadData() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// pass action
|
||||||
|
next(action);
|
||||||
|
|
||||||
|
const state = api.getState();
|
||||||
|
|
||||||
|
// listening devices state change
|
||||||
|
if (locationChange || prevState.connect.devices !== state.connect.devices) {
|
||||||
|
const device = getSelectedDevice(state);
|
||||||
|
if (state.wallet.selectedDevice !== device) {
|
||||||
|
console.warn("UPDATE SELECTED DEVICE!", state.router.location.state)
|
||||||
|
api.dispatch({
|
||||||
|
type: WALLET.SET_SELECTED_DEVICE,
|
||||||
|
device
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return action;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export default WalletService;
|
@ -1,6 +1,7 @@
|
|||||||
/* @flow */
|
/* @flow */
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
import WalletService from './WalletService';
|
||||||
import LogService from './LogService';
|
import LogService from './LogService';
|
||||||
import RouterService from './RouterService';
|
import RouterService from './RouterService';
|
||||||
import LocalStorageService from './LocalStorageService';
|
import LocalStorageService from './LocalStorageService';
|
||||||
@ -9,6 +10,7 @@ import CoinmarketcapService from './CoinmarketcapService';
|
|||||||
import TrezorConnectService from './TrezorConnectService';
|
import TrezorConnectService from './TrezorConnectService';
|
||||||
|
|
||||||
export default [
|
export default [
|
||||||
|
WalletService,
|
||||||
LogService,
|
LogService,
|
||||||
RouterService,
|
RouterService,
|
||||||
LocalStorageService,
|
LocalStorageService,
|
||||||
|
Loading…
Reference in New Issue
Block a user