diff options
| author | Andrej Mihajlov <and@codeispoetry.ru> | 2017-03-01 12:17:07 +0000 |
|---|---|---|
| committer | Andrej Mihajlov <and@codeispoetry.ru> | 2017-03-01 12:17:07 +0000 |
| commit | 5a86b08fb46cbfee360d349668e1e1dc3ad470be (patch) | |
| tree | 4f867baaec22fb81f5f86244b9bed1a5e87dbce3 /app | |
| parent | 156cc54f9a8582efd6468b7465b54e093306bf37 (diff) | |
| download | mullvadvpn-5a86b08fb46cbfee360d349668e1e1dc3ad470be.tar.xz mullvadvpn-5a86b08fb46cbfee360d349668e1e1dc3ad470be.zip | |
Move routing based from backend events into separate module for improved testability
Diffstat (limited to 'app')
| -rw-r--r-- | app/app.js | 21 | ||||
| -rw-r--r-- | app/lib/backend-routing.js | 19 |
2 files changed, 24 insertions, 16 deletions
diff --git a/app/app.js b/app/app.js index 369cd6cebb..99dcd4e83a 100644 --- a/app/app.js +++ b/app/app.js @@ -2,7 +2,7 @@ import React from 'react'; import ReactDOM from 'react-dom'; import { Provider } from 'react-redux'; import { Router, createMemoryHistory } from 'react-router'; -import { syncHistoryWithStore, replace } from 'react-router-redux'; +import { syncHistoryWithStore } from 'react-router-redux'; import { webFrame, ipcRenderer } from 'electron'; import makeRoutes from './routes'; import configureStore from './store'; @@ -10,6 +10,7 @@ import userActions from './actions/user'; import connectActions from './actions/connect'; import Backend from './lib/backend'; import mapBackendEventsToReduxActions from './lib/backend-redux-actions'; +import mapBackendEventsToRouter from './lib/backend-routing'; import { LoginState, ConnectionState } from './constants'; const initialState = {}; @@ -54,25 +55,13 @@ const updateTrayIcon = () => { }; // patch backend -backend.syncWithReduxStore(backend, store); +backend.syncWithReduxStore(store); // Setup primary event handlers to translate backend events into redux dispatch mapBackendEventsToReduxActions(backend, store); -// redirect user to main screen after login -backend.on(Backend.EventType.login, (account, error) => { - if(error) { return; } // no-op on error - - setTimeout(() => { - const { settings } = store.getState(); - const server = backend.serverInfo(settings.preferredServer); - backend.connect(server.address); - store.dispatch(replace('/connect')); - }, 1000); -}); - -// redirect user to login page on logout -backend.on(Backend.EventType.logout, () => store.dispatch(replace('/'))); +// Setup routing based on backend events +mapBackendEventsToRouter(backend, store); // Setup events to update tray icon backend.on(Backend.EventType.connect, updateTrayIcon); diff --git a/app/lib/backend-routing.js b/app/lib/backend-routing.js new file mode 100644 index 0000000000..7ff114f709 --- /dev/null +++ b/app/lib/backend-routing.js @@ -0,0 +1,19 @@ +import { replace } from 'react-router-redux'; +import Backend from './backend'; + +export default function mapBackendEventsToRouter(backend, store) { + // redirect user to main screen after login + backend.on(Backend.EventType.login, (account, error) => { + if(error) { return; } // no-op on error + + setTimeout(() => { + const { settings } = store.getState(); + const server = backend.serverInfo(settings.preferredServer); + backend.connect(server.address); + store.dispatch(replace('/connect')); + }, 1000); + }); + + // redirect user to login page on logout + backend.on(Backend.EventType.logout, () => store.dispatch(replace('/'))); +}
\ No newline at end of file |
