summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2019-01-22 14:23:12 +0100
committerAndrej Mihajlov <and@mullvad.net>2019-01-23 10:50:15 +0100
commite0eeed43aff5d2c7cf052b655ed9838ee74c28f9 (patch)
tree33b513bb370cea7d9cc8d5778e684fba27c2726f
parent676119edac59d4cb1768fa06c1948902dd520006 (diff)
downloadmullvadvpn-e0eeed43aff5d2c7cf052b655ed9838ee74c28f9.tar.xz
mullvadvpn-e0eeed43aff5d2c7cf052b655ed9838ee74c28f9.zip
Add IPC events for manipulating the account
-rw-r--r--gui/packages/desktop/src/main/index.js5
-rw-r--r--gui/packages/desktop/src/renderer/app.js4
-rw-r--r--gui/packages/desktop/src/renderer/lib/daemon-rpc-proxy.js4
-rw-r--r--gui/packages/desktop/src/shared/ipc-event-channel.js22
4 files changed, 31 insertions, 4 deletions
diff --git a/gui/packages/desktop/src/main/index.js b/gui/packages/desktop/src/main/index.js
index 683ec5db55..d63a65a944 100644
--- a/gui/packages/desktop/src/main/index.js
+++ b/gui/packages/desktop/src/main/index.js
@@ -772,6 +772,11 @@ const ApplicationMain = {
this._guiSettings.monochromaticIcon = monochromaticIcon;
});
+ IpcMainEventChannel.account.handleSet((token: AccountToken) =>
+ this._daemonRpc.setAccount(token),
+ );
+ IpcMainEventChannel.account.handleUnset(() => this._daemonRpc.setAccount(null));
+
IpcMainEventChannel.accountHistory.handleGet(() => this._daemonRpc.getAccountHistory());
IpcMainEventChannel.accountHistory.handleRemoveItem((token: AccountToken) =>
this._daemonRpc.removeAccountFromHistory(token),
diff --git a/gui/packages/desktop/src/renderer/app.js b/gui/packages/desktop/src/renderer/app.js
index 28fc33f949..f433688a98 100644
--- a/gui/packages/desktop/src/renderer/app.js
+++ b/gui/packages/desktop/src/renderer/app.js
@@ -177,7 +177,7 @@ export default class AppRenderer {
log.debug(`Failed to get account data, logging in anyway: ${verification.error.message}`);
}
- await this._daemonRpc.setAccount(accountToken);
+ await IpcRendererEventChannel.account.set(accountToken);
// Redirect the user after some time to allow for the 'Logged in' screen to be visible
this._loginTimer = setTimeout(async () => {
@@ -217,7 +217,7 @@ export default class AppRenderer {
async logout() {
try {
- await this._daemonRpc.setAccount(null);
+ await IpcRendererEventChannel.account.unset();
} catch (e) {
log.info('Failed to logout: ', e.message);
}
diff --git a/gui/packages/desktop/src/renderer/lib/daemon-rpc-proxy.js b/gui/packages/desktop/src/renderer/lib/daemon-rpc-proxy.js
index a9f32b34d3..182fb0fbb2 100644
--- a/gui/packages/desktop/src/renderer/lib/daemon-rpc-proxy.js
+++ b/gui/packages/desktop/src/renderer/lib/daemon-rpc-proxy.js
@@ -106,8 +106,8 @@ export default class DaemonRpcProxy implements DaemonRpcProtocol {
return this._sendMessage('getRelayLocations');
}
- setAccount(accountToken: ?AccountToken): Promise<void> {
- return this._sendMessage('setAccount', accountToken);
+ setAccount(_accountToken: ?AccountToken): Promise<void> {
+ throw new Error('Do not use this method');
}
updateRelaySettings(update: RelaySettingsUpdate): Promise<void> {
diff --git a/gui/packages/desktop/src/shared/ipc-event-channel.js b/gui/packages/desktop/src/shared/ipc-event-channel.js
index d54009dfdb..029ff7dd26 100644
--- a/gui/packages/desktop/src/shared/ipc-event-channel.js
+++ b/gui/packages/desktop/src/shared/ipc-event-channel.js
@@ -46,6 +46,16 @@ interface GuiSettingsHandlers {
handleMonochromaticIcon: ((boolean) => void) => void;
}
+interface AccountHandlers {
+ handleSet(fn: (AccountToken) => Promise<void>): void;
+ handleUnset(fn: () => Promise<void>): void;
+}
+
+interface AccountMethods {
+ set(token: AccountToken): Promise<void>;
+ unset(): Promise<void>;
+}
+
interface AccountHistoryHandlers {
handleGet(fn: () => Promise<Array<AccountToken>>): void;
handleRemoveItem(fn: (token: AccountToken) => Promise<void>): void;
@@ -74,6 +84,8 @@ const SET_START_MINIMIZED = 'set-start-minimized';
const GET_APP_STATE = 'get-app-state';
const GET_ACCOUNT_HISTORY = 'get-account-history';
const REMOVE_ACCOUNT_HISTORY_ITEM = 'remove-account-history-item';
+const SET_ACCOUNT = 'set-account';
+const UNSET_ACCOUNT = 'unset-account';
/// Typed IPC event channel
///
@@ -127,6 +139,11 @@ export class IpcRendererEventChannel {
setStartMinimized: set(SET_START_MINIMIZED),
};
+ static account: AccountMethods = {
+ set: requestSender(SET_ACCOUNT),
+ unset: requestSender(UNSET_ACCOUNT),
+ };
+
static accountHistory: AccountHistoryMethods = {
get: requestSender(GET_ACCOUNT_HISTORY),
removeItem: requestSender(REMOVE_ACCOUNT_HISTORY_ITEM),
@@ -181,6 +198,11 @@ export class IpcMainEventChannel {
handleStartMinimized: handler(SET_START_MINIMIZED),
};
+ static account: AccountHandlers = {
+ handleSet: requestHandler(SET_ACCOUNT),
+ handleUnset: requestHandler(UNSET_ACCOUNT),
+ };
+
static accountHistory: AccountHistoryHandlers = {
handleGet: requestHandler(GET_ACCOUNT_HISTORY),
handleRemoveItem: requestHandler(REMOVE_ACCOUNT_HISTORY_ITEM),