summaryrefslogtreecommitdiffhomepage
path: root/app/app.js
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2018-06-20 15:34:40 +0200
committerAndrej Mihajlov <and@mullvad.net>2018-07-03 13:37:54 +0200
commit73840e98952dd3f7c005fcec44c971455da179eb (patch)
tree15a887410858007a802450ad2870d8bf495dd16d /app/app.js
parent67e82627564f8e4a2d8da4bcf5f0fd00867876bc (diff)
downloadmullvadvpn-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.js40
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}`);