summaryrefslogtreecommitdiffhomepage
path: root/app/lib/backend-routing.js
blob: 2a49a8a3e95931240f32a8381cd8d8bac10a24c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import { replace } from 'react-router-redux';

/**
 * Add listeners to translate backend events to react router actions
 *
 * @export
 * @param {Backend} backend
 * @param {Redux.Store} store
 */
export default function mapBackendEventsToRouter(backend, store) {
  // redirect user to main screen after login
  backend.on('login', (_account, error) => {
    if(error) { return; } // no-op on error

    setTimeout(() => {
      const { settings } = store.getState();

      // auto-connect only if autoSecure is on
      if(settings.autoSecure) {
        const server = backend.serverInfo(settings.preferredServer);
        backend.connect(server.address);
      }

      store.dispatch(replace('/connect'));
    }, 1000);
  });

  // redirect user to login page on logout
  backend.on('logout', () => store.dispatch(replace('/')));
}