diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2019-01-23 15:05:24 +0100 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2019-01-24 13:45:45 +0100 |
| commit | e42a8d4749c68d075cb7879df9d7b237e7fd31a1 (patch) | |
| tree | 53240ad653a8567eeb6059f6070a50db0d09eaa2 /gui | |
| parent | 3f951dc3b9ba9f076aa21aa5f048d7b70a8a9aac (diff) | |
| download | mullvadvpn-e42a8d4749c68d075cb7879df9d7b237e7fd31a1.tar.xz mullvadvpn-e42a8d4749c68d075cb7879df9d7b237e7fd31a1.zip | |
Deprecate and remove DaemonRpcProxy
Diffstat (limited to 'gui')
18 files changed, 116 insertions, 302 deletions
diff --git a/gui/packages/desktop/src/main/index.js b/gui/packages/desktop/src/main/index.js index d1598c3210..7ebd88a8c7 100644 --- a/gui/packages/desktop/src/main/index.js +++ b/gui/packages/desktop/src/main/index.js @@ -23,6 +23,7 @@ import type { AppVersionInfo, Location, RelayList, + RelaySettingsUpdate, Settings, TunnelStateTransition, } from './daemon-rpc'; @@ -497,7 +498,7 @@ const ApplicationMain = { } if (this._windowController) { - IpcMainEventChannel.tunnelState.notify(this._windowController.webContents, newState); + IpcMainEventChannel.tunnel.notify(this._windowController.webContents, newState); } }, @@ -733,27 +734,6 @@ const ApplicationMain = { }, _registerIpcListeners() { - ipcMain.on('daemon-rpc-call', async (event, id: string, method: string, payload: any) => { - log.debug(`Got daemon-rpc-call: ${id} ${method}`); - - try { - // $FlowFixMe: flow does not like index accessors. - const result = await this._daemonRpc[method](payload); - - log.debug(`Send daemon-rpc-reply-${id} ${method} with success`); - event.sender.send(`daemon-rpc-reply-${id}`, result); - } catch (error) { - log.debug(`Send daemon-rpc-reply-${id} ${method} with error: ${error.message}`); - event.sender.send(`daemon-rpc-reply-${id}`, undefined, { - className: error.constructor.name || '', - data: { - message: error.message, - ...JSON.parse(JSON.stringify(error)), - }, - }); - } - }); - IpcMainEventChannel.state.handleGet(() => ({ isConnected: this._connectedToDaemon, autoStart: getOpenAtLogin(), @@ -766,10 +746,29 @@ const ApplicationMain = { guiSettings: this._guiSettings.state, })); + IpcMainEventChannel.settings.handleAllowLan((allowLan: boolean) => + this._daemonRpc.setAllowLan(allowLan), + ); + IpcMainEventChannel.settings.handleEnableIpv6((enableIpv6: boolean) => + this._daemonRpc.setEnableIpv6(enableIpv6), + ); + IpcMainEventChannel.settings.handleBlockWhenDisconnected((blockWhenDisconnected: boolean) => + this._daemonRpc.setBlockWhenDisconnected(blockWhenDisconnected), + ); + IpcMainEventChannel.settings.handleOpenVpnMssfix((mssfix: ?number) => + this._daemonRpc.setOpenVpnMssfix(mssfix), + ); + IpcMainEventChannel.settings.handleUpdateRelaySettings((update: RelaySettingsUpdate) => + this._daemonRpc.updateRelaySettings(update), + ); + IpcMainEventChannel.autoStart.handleSet((autoStart: boolean) => { return this._setAutoStart(autoStart); }); + IpcMainEventChannel.tunnel.handleConnect(() => this._daemonRpc.connectTunnel()); + IpcMainEventChannel.tunnel.handleDisconnect(() => this._daemonRpc.disconnectTunnel()); + IpcMainEventChannel.guiSettings.handleAutoConnect((autoConnect: boolean) => { this._guiSettings.autoConnect = autoConnect; }); @@ -786,6 +785,9 @@ const ApplicationMain = { this._daemonRpc.setAccount(token), ); IpcMainEventChannel.account.handleUnset(() => this._daemonRpc.setAccount(null)); + IpcMainEventChannel.account.handleGetData((token: AccountToken) => + this._daemonRpc.getAccountData(token), + ); IpcMainEventChannel.accountHistory.handleGet(() => this._daemonRpc.getAccountHistory()); IpcMainEventChannel.accountHistory.handleRemoveItem((token: AccountToken) => diff --git a/gui/packages/desktop/src/renderer/app.js b/gui/packages/desktop/src/renderer/app.js index dbb2200e87..bc4a93021e 100644 --- a/gui/packages/desktop/src/renderer/app.js +++ b/gui/packages/desktop/src/renderer/app.js @@ -36,18 +36,15 @@ import type { RelaySettings, Settings, TunnelStateTransition, -} from './lib/daemon-rpc-proxy'; - -import DaemonRpcProxy from './lib/daemon-rpc-proxy'; +} from '../main/daemon-rpc'; export default class AppRenderer { _memoryHistory = createMemoryHistory(); _reduxStore = configureStore(null, this._memoryHistory); _reduxActions: *; - _daemonRpc = new DaemonRpcProxy(); _accountDataCache = new AccountDataCache( (accountToken) => { - return this._daemonRpc.getAccountData(accountToken); + return IpcRendererEventChannel.account.getData(accountToken); }, (accountData) => { const expiry = accountData ? accountData.expiry : null; @@ -100,7 +97,7 @@ export default class AppRenderer { this._onDaemonDisconnected(errorMessage ? new Error(errorMessage) : null); }); - IpcRendererEventChannel.tunnelState.listen((newState: TunnelStateTransition) => { + IpcRendererEventChannel.tunnel.listen((newState: TunnelStateTransition) => { this._setTunnelState(newState); }); @@ -236,16 +233,16 @@ export default class AppRenderer { // switch to the connecting state ahead of time to make the app look more responsive this._reduxActions.connection.connecting(null); - return this._daemonRpc.connectTunnel(); + return IpcRendererEventChannel.tunnel.connect(); } } disconnectTunnel(): Promise<void> { - return this._daemonRpc.disconnectTunnel(); + return IpcRendererEventChannel.tunnel.disconnect(); } updateRelaySettings(relaySettings: RelaySettingsUpdate) { - return this._daemonRpc.updateRelaySettings(relaySettings); + return IpcRendererEventChannel.settings.updateRelaySettings(relaySettings); } _setRelaySettings(relaySettings: RelaySettings) { @@ -313,26 +310,26 @@ export default class AppRenderer { async setAllowLan(allowLan: boolean) { const actions = this._reduxActions; - await this._daemonRpc.setAllowLan(allowLan); + await IpcRendererEventChannel.settings.setAllowLan(allowLan); actions.settings.updateAllowLan(allowLan); } async setEnableIpv6(enableIpv6: boolean) { const actions = this._reduxActions; - await this._daemonRpc.setEnableIpv6(enableIpv6); + await IpcRendererEventChannel.settings.setEnableIpv6(enableIpv6); actions.settings.updateEnableIpv6(enableIpv6); } async setBlockWhenDisconnected(blockWhenDisconnected: boolean) { const actions = this._reduxActions; - await this._daemonRpc.setBlockWhenDisconnected(blockWhenDisconnected); + await IpcRendererEventChannel.settings.setBlockWhenDisconnected(blockWhenDisconnected); actions.settings.updateBlockWhenDisconnected(blockWhenDisconnected); } async setOpenVpnMssfix(mssfix: ?number) { const actions = this._reduxActions; actions.settings.updateOpenVpnMssfix(mssfix); - await this._daemonRpc.setOpenVpnMssfix(mssfix); + await IpcRendererEventChannel.settings.setOpenVpnMssfix(mssfix); } async setAutoConnect(autoConnect: boolean) { diff --git a/gui/packages/desktop/src/renderer/components/Account.js b/gui/packages/desktop/src/renderer/components/Account.js index 6d5c537f92..aaedd96db2 100644 --- a/gui/packages/desktop/src/renderer/components/Account.js +++ b/gui/packages/desktop/src/renderer/components/Account.js @@ -9,7 +9,7 @@ import { Layout, Container } from './Layout'; import { NavigationBar, BackBarItem } from './NavigationBar'; import styles from './AccountStyles'; -import type { AccountToken } from '../lib/daemon-rpc-proxy'; +import type { AccountToken } from '../../main/daemon-rpc'; type Props = { accountToken: AccountToken, diff --git a/gui/packages/desktop/src/renderer/components/Login.js b/gui/packages/desktop/src/renderer/components/Login.js index fe7f23cc8f..1e69316393 100644 --- a/gui/packages/desktop/src/renderer/components/Login.js +++ b/gui/packages/desktop/src/renderer/components/Login.js @@ -10,7 +10,7 @@ import styles from './LoginStyles'; import { colors } from '../../config'; import type { LoginState } from '../redux/account/reducers'; -import type { AccountToken } from '../lib/daemon-rpc-proxy'; +import type { AccountToken } from '../../main/daemon-rpc'; type Props = { accountToken: ?AccountToken, diff --git a/gui/packages/desktop/src/renderer/components/NotificationArea.js b/gui/packages/desktop/src/renderer/components/NotificationArea.js index 3eba431a52..7f6b01f081 100644 --- a/gui/packages/desktop/src/renderer/components/NotificationArea.js +++ b/gui/packages/desktop/src/renderer/components/NotificationArea.js @@ -15,7 +15,7 @@ import { import { AuthFailure } from '../lib/auth-failure'; import AccountExpiry from '../lib/account-expiry'; -import type { BlockReason, TunnelStateTransition } from '../lib/daemon-rpc-proxy'; +import type { BlockReason, TunnelStateTransition } from '../../main/daemon-rpc'; import type { VersionReduxState } from '../redux/version/reducers'; type Props = { diff --git a/gui/packages/desktop/src/renderer/components/SelectLocation.js b/gui/packages/desktop/src/renderer/components/SelectLocation.js index 0f45133da0..448a63ebbd 100644 --- a/gui/packages/desktop/src/renderer/components/SelectLocation.js +++ b/gui/packages/desktop/src/renderer/components/SelectLocation.js @@ -19,7 +19,7 @@ import CityRow from './CityRow'; import RelayRow from './RelayRow'; import type { RelaySettingsRedux, RelayLocationRedux } from '../redux/settings/reducers'; -import type { RelayLocation } from '../lib/daemon-rpc-proxy'; +import type { RelayLocation } from '../../main/daemon-rpc'; type Props = { relaySettings: RelaySettingsRedux, diff --git a/gui/packages/desktop/src/renderer/components/Support.js b/gui/packages/desktop/src/renderer/components/Support.js index 0398976589..62d94f4127 100644 --- a/gui/packages/desktop/src/renderer/components/Support.js +++ b/gui/packages/desktop/src/renderer/components/Support.js @@ -16,7 +16,7 @@ import { Layout, Container } from './Layout'; import { NavigationBar, BackBarItem } from './NavigationBar'; import styles from './SupportStyles'; -import type { AccountToken } from '../lib/daemon-rpc-proxy'; +import type { AccountToken } from '../../main/daemon-rpc'; import type { SupportReportForm } from '../redux/support/actions'; type SupportState = { email: string, diff --git a/gui/packages/desktop/src/renderer/components/TunnelControl.js b/gui/packages/desktop/src/renderer/components/TunnelControl.js index 6590a17818..7ec3f72687 100644 --- a/gui/packages/desktop/src/renderer/components/TunnelControl.js +++ b/gui/packages/desktop/src/renderer/components/TunnelControl.js @@ -6,7 +6,7 @@ import { ConnectionInfo, SecuredLabel, SecuredDisplayStyle, ImageView } from '@m import * as AppButton from './AppButton'; import { colors } from '../../config'; -import type { TunnelStateTransition, RelayProtocol } from '../lib/daemon-rpc-proxy'; +import type { TunnelStateTransition, RelayProtocol } from '../../main/daemon-rpc'; export type RelayInAddress = { ip: string, diff --git a/gui/packages/desktop/src/renderer/lib/daemon-rpc-proxy.js b/gui/packages/desktop/src/renderer/lib/daemon-rpc-proxy.js deleted file mode 100644 index 45a4abe89c..0000000000 --- a/gui/packages/desktop/src/renderer/lib/daemon-rpc-proxy.js +++ /dev/null @@ -1,242 +0,0 @@ -// @flow - -import { ipcRenderer } from 'electron'; -import log from 'electron-log'; -import uuid from 'uuid'; - -// Re-export types -export type { - AccountToken, - AccountData, - AppVersionInfo, - Settings, - TunnelStateTransition, - RelayList, - RelaySettingsUpdate, - RelaySettings, - RelaySettingsCustom, - RelaySettingsNormalUpdate, - RelayLocation, - RelayProtocol, - Ip, - Location, - TunnelEndpoint, - BlockReason, - AfterDisconnect, - ResponseParseError, - TunnelState, - DaemonRpcProtocol, -} from '../../main/daemon-rpc'; - -export { ConnectionObserver, SubscriptionListener } from '../../main/daemon-rpc'; - -import type { - AccountToken, - AccountData, - AppVersionInfo, - DaemonRpcProtocol, - RelaySettingsUpdate, - RelayList, - TunnelStateTransition, - Settings, - Location, -} from '../../main/daemon-rpc'; - -import { ConnectionObserver, SubscriptionListener } from '../../main/daemon-rpc'; - -import { - NoCreditError, - NoInternetError, - NoDaemonError, - InvalidAccountError, - CommunicationError, -} from '../../main/errors'; - -import { TimeOutError, RemoteError } from '../../main/jsonrpc-client'; - -type ErrorInfo = { - className: string, - data: Object, -}; - -export default class DaemonRpcProxy implements DaemonRpcProtocol { - _connectionObservers: Array<ConnectionObserver> = []; - _stateListeners: Array<SubscriptionListener<TunnelStateTransition>> = []; - _settingsListeners: Array<SubscriptionListener<Settings>> = []; - - constructor() { - ipcRenderer.on('connected-daemon', () => { - for (const observer of this._connectionObservers) { - observer._onOpen(); - } - }); - - ipcRenderer.on('disconnected-daemon', (_event: Event, error: ?Error) => { - for (const observer of this._connectionObservers) { - observer._onClose(error); - } - }); - - ipcRenderer.on('state-changed', (_event: Event, newState: TunnelStateTransition) => { - for (const listener of this._stateListeners) { - listener._onEvent(newState); - } - }); - - ipcRenderer.on('settings-changed', (_event: Event, newSettings: Settings) => { - for (const listener of this._settingsListeners) { - listener._onEvent(newSettings); - } - }); - } - - connect(_connectionInfo: { path: string }): void { - throw new Error('Do not call this method.'); - } - - disconnect(): void { - throw new Error('Do not call this method.'); - } - - getAccountData(accountToken: AccountToken): Promise<AccountData> { - return this._sendMessage('getAccountData', accountToken); - } - - getRelayLocations(): Promise<RelayList> { - return this._sendMessage('getRelayLocations'); - } - - setAccount(_accountToken: ?AccountToken): Promise<void> { - throw new Error('Do not use this method'); - } - - updateRelaySettings(update: RelaySettingsUpdate): Promise<void> { - return this._sendMessage('updateRelaySettings', update); - } - - setAllowLan(allowLan: boolean): Promise<void> { - return this._sendMessage('setAllowLan', allowLan); - } - - setEnableIpv6(enableIpv6: boolean): Promise<void> { - return this._sendMessage('setEnableIpv6', enableIpv6); - } - - setBlockWhenDisconnected(blockWhenDisconnected: boolean): Promise<void> { - return this._sendMessage('setBlockWhenDisconnected', blockWhenDisconnected); - } - - setOpenVpnMssfix(mssfix: ?number): Promise<void> { - return this._sendMessage('setOpenVpnMssfix', mssfix); - } - - setAutoConnect(_autoConnect: boolean): Promise<void> { - throw new Error('Do not call this method.'); - } - - connectTunnel(): Promise<void> { - return this._sendMessage('connectTunnel'); - } - - disconnectTunnel(): Promise<void> { - return this._sendMessage('disconnectTunnel'); - } - - getLocation(): Promise<Location> { - return this._sendMessage('getLocation'); - } - - getState(): Promise<TunnelStateTransition> { - return this._sendMessage('getState'); - } - - getSettings(): Promise<Settings> { - return this._sendMessage('getSettings'); - } - - subscribeStateListener(listener: SubscriptionListener<TunnelStateTransition>): Promise<void> { - this._stateListeners.push(listener); - return Promise.resolve(); - } - - subscribeSettingsListener(listener: SubscriptionListener<Settings>): Promise<void> { - this._settingsListeners.push(listener); - return Promise.resolve(); - } - - addConnectionObserver(observer: ConnectionObserver): void { - this._connectionObservers.push(observer); - } - - removeConnectionObserver(observer: ConnectionObserver): void { - const index = this._connectionObservers.indexOf(observer); - if (index !== -1) { - this._connectionObservers.splice(index, 1); - } - } - - getAccountHistory(): Promise<Array<AccountToken>> { - throw new Error('Do not use this method'); - } - - removeAccountFromHistory(_accountToken: AccountToken): Promise<void> { - throw new Error('Do not use this method'); - } - - getCurrentVersion(): Promise<string> { - return this._sendMessage('getCurrentVersion'); - } - - getVersionInfo(): Promise<AppVersionInfo> { - return this._sendMessage('getVersionInfo'); - } - - _sendMessage<T, R>(method: string, payload: ?T): Promise<R> { - const promise: Promise<R> = new Promise((resolve, reject) => { - const id = uuid.v4(); - - ipcRenderer.once( - `daemon-rpc-reply-${id}`, - (_event: Event, result: R, errorInfo: ?ErrorInfo) => { - if (errorInfo) { - const error = this._deserializeError(errorInfo.className, errorInfo.data); - - log.debug( - `Got daemon-rpc-reply-${id} ${method} with error: ${JSON.stringify(errorInfo)}`, - ); - - reject(error); - } else { - log.debug(`Got daemon-rpc-reply-${id} ${method} with success`); - resolve(result); - } - }, - ); - - ipcRenderer.send(`daemon-rpc-call`, id, method, payload); - }); - - return promise; - } - - _deserializeError(className: string, data: Object): Error { - switch (className) { - case 'RemoteError': - return new RemoteError(data.code, data.details); - case 'TimeOutError': - return new TimeOutError(data._jsonRpcMessage); - case 'NoCreditError': - return new NoCreditError(); - case 'NoInternetError': - return new NoInternetError(); - case 'NoDaemonError': - return new NoDaemonError(); - case 'InvalidAccountError': - return new InvalidAccountError(); - case 'CommunicationError': - return new CommunicationError(); - default: - return new Error(data.message || ''); - } - } -} diff --git a/gui/packages/desktop/src/renderer/lib/relay-settings-builder.js b/gui/packages/desktop/src/renderer/lib/relay-settings-builder.js index ba85fe26ed..50175811fa 100644 --- a/gui/packages/desktop/src/renderer/lib/relay-settings-builder.js +++ b/gui/packages/desktop/src/renderer/lib/relay-settings-builder.js @@ -6,7 +6,7 @@ import type { RelaySettingsUpdate, RelaySettingsNormalUpdate, RelaySettingsCustom, -} from './daemon-rpc-proxy'; +} from '../../main/daemon-rpc'; type LocationBuilder<Self> = { country: (country: string) => Self, diff --git a/gui/packages/desktop/src/renderer/redux/account/actions.js b/gui/packages/desktop/src/renderer/redux/account/actions.js index a089cb3705..b69679e5c5 100644 --- a/gui/packages/desktop/src/renderer/redux/account/actions.js +++ b/gui/packages/desktop/src/renderer/redux/account/actions.js @@ -1,6 +1,6 @@ // @flow -import type { AccountToken } from '../../lib/daemon-rpc-proxy'; +import type { AccountToken } from '../../../main/daemon-rpc'; type StartLoginAction = { type: 'START_LOGIN', diff --git a/gui/packages/desktop/src/renderer/redux/account/reducers.js b/gui/packages/desktop/src/renderer/redux/account/reducers.js index cac021128f..c5a16217e2 100644 --- a/gui/packages/desktop/src/renderer/redux/account/reducers.js +++ b/gui/packages/desktop/src/renderer/redux/account/reducers.js @@ -1,7 +1,7 @@ // @flow import type { ReduxAction } from '../store'; -import type { AccountToken } from '../../lib/daemon-rpc-proxy'; +import type { AccountToken } from '../../../main/daemon-rpc'; export type LoginState = 'none' | 'logging in' | 'failed' | 'ok'; export type AccountReduxState = { diff --git a/gui/packages/desktop/src/renderer/redux/connection/actions.js b/gui/packages/desktop/src/renderer/redux/connection/actions.js index 54ae56746a..2dbd304014 100644 --- a/gui/packages/desktop/src/renderer/redux/connection/actions.js +++ b/gui/packages/desktop/src/renderer/redux/connection/actions.js @@ -1,6 +1,6 @@ // @flow -import type { AfterDisconnect, BlockReason, TunnelEndpoint } from '../../lib/daemon-rpc-proxy'; +import type { AfterDisconnect, BlockReason, TunnelEndpoint } from '../../../main/daemon-rpc'; type ConnectingAction = { type: 'CONNECTING', diff --git a/gui/packages/desktop/src/renderer/redux/connection/reducers.js b/gui/packages/desktop/src/renderer/redux/connection/reducers.js index dac8d63209..00a33ca0d0 100644 --- a/gui/packages/desktop/src/renderer/redux/connection/reducers.js +++ b/gui/packages/desktop/src/renderer/redux/connection/reducers.js @@ -1,7 +1,7 @@ // @flow import type { ReduxAction } from '../store'; -import type { TunnelStateTransition, Ip } from '../../lib/daemon-rpc-proxy'; +import type { TunnelStateTransition, Ip } from '../../../main/daemon-rpc'; export type ConnectionReduxState = { status: TunnelStateTransition, diff --git a/gui/packages/desktop/src/renderer/redux/settings/reducers.js b/gui/packages/desktop/src/renderer/redux/settings/reducers.js index b92a72d7d0..8de27e9f32 100644 --- a/gui/packages/desktop/src/renderer/redux/settings/reducers.js +++ b/gui/packages/desktop/src/renderer/redux/settings/reducers.js @@ -1,7 +1,7 @@ // @flow import type { ReduxAction } from '../store'; -import type { RelayProtocol, RelayLocation } from '../../lib/daemon-rpc-proxy'; +import type { RelayProtocol, RelayLocation } from '../../../main/daemon-rpc'; import type { GuiSettingsState } from '../../../shared/gui-settings-state'; export type RelaySettingsRedux = diff --git a/gui/packages/desktop/src/renderer/redux/version/actions.js b/gui/packages/desktop/src/renderer/redux/version/actions.js index a3e07502d4..8ab4b08757 100644 --- a/gui/packages/desktop/src/renderer/redux/version/actions.js +++ b/gui/packages/desktop/src/renderer/redux/version/actions.js @@ -1,6 +1,6 @@ // @flow -import type { AppVersionInfo } from '../../lib/daemon-rpc-proxy'; +import type { AppVersionInfo } from '../../../main/daemon-rpc'; type UpdateLatestActionPayload = { upToDate: boolean, diff --git a/gui/packages/desktop/src/shared/ipc-event-channel.js b/gui/packages/desktop/src/shared/ipc-event-channel.js index 273a543790..e2484b22b5 100644 --- a/gui/packages/desktop/src/shared/ipc-event-channel.js +++ b/gui/packages/desktop/src/shared/ipc-event-channel.js @@ -9,8 +9,10 @@ import type { GuiSettingsState } from './gui-settings-state'; import type { AppUpgradeInfo, CurrentAppVersionInfo } from '../main/index'; import type { AccountToken, + AccountData, Location, RelayList, + RelaySettingsUpdate, Settings, TunnelStateTransition, } from '../main/daemon-rpc'; @@ -35,26 +37,54 @@ interface Receiver<T> { listen<T>(fn: (T) => void): void; } +interface TunnelMethods { + connect(): Promise<void>; + disconnect(): Promise<void>; +} + +interface TunnelHandlers { + handleConnect(fn: () => Promise<void>): void; + handleDisconnect(fn: () => Promise<void>): void; +} + +interface SettingsMethods { + setAllowLan(boolean): Promise<void>; + setEnableIpv6(boolean): Promise<void>; + setBlockWhenDisconnected(boolean): Promise<void>; + setOpenVpnMssfix(?number): Promise<void>; + updateRelaySettings(update: RelaySettingsUpdate): Promise<void>; +} + +interface SettingsHandlers { + handleAllowLan(fn: (boolean) => Promise<void>): void; + handleEnableIpv6(fn: (boolean) => Promise<void>): void; + handleBlockWhenDisconnected(fn: (boolean) => Promise<void>): void; + handleOpenVpnMssfix(fn: (?number) => Promise<void>): void; + handleUpdateRelaySettings(fn: (RelaySettingsUpdate) => Promise<void>): void; +} + interface GuiSettingsMethods { - setAutoConnect: (boolean) => void; - setStartMinimized: (boolean) => void; - setMonochromaticIcon: (boolean) => void; + setAutoConnect(boolean): void; + setStartMinimized(boolean): void; + setMonochromaticIcon(boolean): void; } interface GuiSettingsHandlers { - handleAutoConnect: ((boolean) => void) => void; - handleStartMinimized: ((boolean) => void) => void; - handleMonochromaticIcon: ((boolean) => void) => void; + handleAutoConnect((boolean) => void): void; + handleStartMinimized((boolean) => void): void; + handleMonochromaticIcon((boolean) => void): void; } interface AccountHandlers { handleSet(fn: (AccountToken) => Promise<void>): void; handleUnset(fn: () => Promise<void>): void; + handleGetData(fn: (AccountToken) => Promise<AccountData>): void; } interface AccountMethods { set(token: AccountToken): Promise<void>; unset(): Promise<void>; + getData(token: AccountToken): Promise<AccountData>; } interface AccountHistoryHandlers { @@ -73,15 +103,25 @@ interface AutoStartMethods { } interface AutoStartHandlers { - handleSet: ((boolean) => Promise<void>) => void; + handleSet((boolean) => Promise<void>): void; } /// Events names const DAEMON_CONNECTED = 'daemon-connected'; const DAEMON_DISCONNECTED = 'daemon-disconnected'; + const TUNNEL_STATE_CHANGED = 'tunnel-state-changed'; +const CONNECT_TUNNEL = 'connect-tunnel'; +const DISCONNECT_TUNNEL = 'disconnect-tunnel'; + const SETTINGS_CHANGED = 'settings-changed'; +const SET_ALLOW_LAN = 'set-allow-lan'; +const SET_ENABLE_IPV6 = 'set-enable-ipv6'; +const SET_BLOCK_WHEN_DISCONNECTED = 'set-block-when-disconnected'; +const SET_OPENVPN_MSSFIX = 'set-openvpn-mssfix'; +const UPDATE_RELAY_SETTINGS = 'update-relay-settings'; + const LOCATION_CHANGED = 'location-changed'; const RELAYS_CHANGED = 'relays-changed'; const CURRENT_VERSION_CHANGED = 'current-version-changed'; @@ -99,6 +139,7 @@ const REMOVE_ACCOUNT_HISTORY_ITEM = 'remove-account-history-item'; const SET_ACCOUNT = 'set-account'; const UNSET_ACCOUNT = 'unset-account'; +const GET_ACCOUNT_DATA = 'get-account-data'; const AUTO_START_CHANGED = 'auto-start-changed'; const SET_AUTO_START = 'set-auto-start'; @@ -124,12 +165,19 @@ export class IpcRendererEventChannel { listen: listen(DAEMON_DISCONNECTED), }; - static tunnelState: Receiver<TunnelStateTransition> = { + static tunnel: Receiver<TunnelStateTransition> & TunnelMethods = { listen: listen(TUNNEL_STATE_CHANGED), + connect: requestSender(CONNECT_TUNNEL), + disconnect: requestSender(DISCONNECT_TUNNEL), }; - static settings: Receiver<Settings> = { + static settings: Receiver<Settings> & SettingsMethods = { listen: listen(SETTINGS_CHANGED), + setAllowLan: requestSender(SET_ALLOW_LAN), + setEnableIpv6: requestSender(SET_ENABLE_IPV6), + setBlockWhenDisconnected: requestSender(SET_BLOCK_WHEN_DISCONNECTED), + setOpenVpnMssfix: requestSender(SET_OPENVPN_MSSFIX), + updateRelaySettings: requestSender(UPDATE_RELAY_SETTINGS), }; static location: Receiver<Location> = { @@ -163,6 +211,7 @@ export class IpcRendererEventChannel { static account: AccountMethods = { set: requestSender(SET_ACCOUNT), unset: requestSender(UNSET_ACCOUNT), + getData: requestSender(GET_ACCOUNT_DATA), }; static accountHistory: AccountHistoryMethods = { @@ -188,16 +237,23 @@ export class IpcMainEventChannel { notify: sender(DAEMON_DISCONNECTED), }; - static tunnelState: Sender<TunnelStateTransition> = { + static tunnel: Sender<TunnelStateTransition> & TunnelHandlers = { notify: sender(TUNNEL_STATE_CHANGED), + handleConnect: requestHandler(CONNECT_TUNNEL), + handleDisconnect: requestHandler(DISCONNECT_TUNNEL), }; static location: Sender<Location> = { notify: sender(LOCATION_CHANGED), }; - static settings: Sender<Settings> = { + static settings: Sender<Settings> & SettingsHandlers = { notify: sender(SETTINGS_CHANGED), + handleAllowLan: requestHandler(SET_ALLOW_LAN), + handleEnableIpv6: requestHandler(SET_ENABLE_IPV6), + handleBlockWhenDisconnected: requestHandler(SET_BLOCK_WHEN_DISCONNECTED), + handleOpenVpnMssfix: requestHandler(SET_OPENVPN_MSSFIX), + handleUpdateRelaySettings: requestHandler(UPDATE_RELAY_SETTINGS), }; static relays: Sender<RelayList> = { @@ -227,6 +283,7 @@ export class IpcMainEventChannel { static account: AccountHandlers = { handleSet: requestHandler(SET_ACCOUNT), handleUnset: requestHandler(UNSET_ACCOUNT), + handleGetData: requestHandler(GET_ACCOUNT_DATA), }; static accountHistory: AccountHistoryHandlers = { diff --git a/gui/packages/desktop/test/account-data-cache.spec.js b/gui/packages/desktop/test/account-data-cache.spec.js index 17770fac77..105466a1a6 100644 --- a/gui/packages/desktop/test/account-data-cache.spec.js +++ b/gui/packages/desktop/test/account-data-cache.spec.js @@ -1,7 +1,7 @@ // @flow import { AccountDataCache } from '../src/renderer/app'; -import type { AccountData } from '../src/renderer/lib/daemon-rpc-proxy'; +import type { AccountData } from '../src/main/daemon-rpc'; describe('AccountData cache', () => { const dummyAccountToken = '9876543210'; |
