diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2018-06-20 15:34:40 +0200 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2018-07-03 13:37:54 +0200 |
| commit | 73840e98952dd3f7c005fcec44c971455da179eb (patch) | |
| tree | 15a887410858007a802450ad2870d8bf495dd16d /app/app.js | |
| parent | 67e82627564f8e4a2d8da4bcf5f0fd00867876bc (diff) | |
| download | mullvadvpn-73840e98952dd3f7c005fcec44c971455da179eb.tar.xz mullvadvpn-73840e98952dd3f7c005fcec44c971455da179eb.zip | |
Refactor IpcFacade to DaemonRpc and JsonRpcWs to JsonRpcTransport
Diffstat (limited to 'app/app.js')
| -rw-r--r-- | app/app.js | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/app/app.js b/app/app.js index 70d1052560..5ebc1137a1 100644 --- a/app/app.js +++ b/app/app.js @@ -10,39 +10,55 @@ import { log } from './lib/platform'; import makeRoutes from './routes'; import configureStore from './redux/store'; import { Backend, NoAccountError } from './lib/backend'; +import { DaemonRpc } from './lib/daemon-rpc'; import { setShutdownHandler } from './shutdown-handler'; import type { ConnectionState } from './redux/connection/reducers'; import type { TrayIconType } from './tray-icon-controller'; +import type { RpcCredentialsProvider, RpcCredentials } from './lib/backend'; const initialState = null; const memoryHistory = createMemoryHistory(); const store = configureStore(initialState, memoryHistory); -const backend = new Backend(store); -ipcRenderer.on('daemon-connection', async (_event, args) => { - backend.setCredentials(args.credentials); - backend.sync(); +class CredentialsProvider implements RpcCredentialsProvider { + async request(): Promise<RpcCredentials> { + return new Promise((resolve, _reject) => { + ipcRenderer.once('daemon-connection', async (_event, credentials: RpcCredentials) => { + log.debug('Got credentials: ', credentials); + resolve(credentials); + }); + ipcRenderer.send('daemon-connection'); + }); + } +} + +const rpc = new DaemonRpc(); +const credentialsProvider = new CredentialsProvider(); +const backend = new Backend(store, rpc, credentialsProvider); + +(async function() { + backend.connect(); + try { await backend.autologin(); - await backend.fetchRelaySettings(); - await backend.fetchSecurityState(); - await backend.connect(); - } catch (e) { - if (e instanceof NoAccountError) { + } catch (error) { + if (error instanceof NoAccountError) { log.debug('No previously configured account set, showing window'); ipcRenderer.send('show-window'); + } else { + log.error(`Failed to autologin: ${error.message}`); } } -}); -ipcRenderer.send('daemon-connection'); + backend.connectTunnel(); +})(); setShutdownHandler(async () => { log.info('Executing a shutdown handler'); try { - await backend.disconnect(); + await backend.disconnectTunnel(); log.info('Disconnected the tunnel'); } catch (e) { log.error(`Failed to shutdown tunnel: ${e.message}`); |
