diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2020-02-06 15:39:41 +0100 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2020-02-06 15:45:39 +0100 |
| commit | 8c7bc4426f7f97975356cbfa71d4014fae00c859 (patch) | |
| tree | da1b6f2161379a0f593709725dcdffcb8e242721 /gui/src | |
| parent | 033e58637a99a84a7ace29ff1c23bf7c3b456d48 (diff) | |
| download | mullvadvpn-8c7bc4426f7f97975356cbfa71d4014fae00c859.tar.xz mullvadvpn-8c7bc4426f7f97975356cbfa71d4014fae00c859.zip | |
Pass function for reconnecting to TunnelControl
Diffstat (limited to 'gui/src')
| -rw-r--r-- | gui/src/main/daemon-rpc.ts | 4 | ||||
| -rw-r--r-- | gui/src/main/index.ts | 1 | ||||
| -rw-r--r-- | gui/src/renderer/app.tsx | 4 | ||||
| -rw-r--r-- | gui/src/renderer/components/Connect.tsx | 2 | ||||
| -rw-r--r-- | gui/src/renderer/components/TunnelControl.tsx | 1 | ||||
| -rw-r--r-- | gui/src/renderer/containers/ConnectPage.tsx | 7 | ||||
| -rw-r--r-- | gui/src/shared/ipc-event-channel.ts | 5 |
7 files changed, 24 insertions, 0 deletions
diff --git a/gui/src/main/daemon-rpc.ts b/gui/src/main/daemon-rpc.ts index 78748b70ab..7491b20901 100644 --- a/gui/src/main/daemon-rpc.ts +++ b/gui/src/main/daemon-rpc.ts @@ -496,6 +496,10 @@ export class DaemonRpc { await this.transport.send('disconnect'); } + public async reconnectTunnel(): Promise<void> { + await this.transport.send('reconnect'); + } + public async getLocation(): Promise<ILocation | undefined> { const response = await this.transport.send('get_current_location', [], NETWORK_CALL_TIMEOUT); try { diff --git a/gui/src/main/index.ts b/gui/src/main/index.ts index a335a9f372..6663a5574e 100644 --- a/gui/src/main/index.ts +++ b/gui/src/main/index.ts @@ -943,6 +943,7 @@ class ApplicationMain { IpcMainEventChannel.tunnel.handleConnect(() => this.daemonRpc.connectTunnel()); IpcMainEventChannel.tunnel.handleDisconnect(() => this.daemonRpc.disconnectTunnel()); + IpcMainEventChannel.tunnel.handleReconnect(() => this.daemonRpc.reconnectTunnel()); IpcMainEventChannel.guiSettings.handleEnableSystemNotifications((flag: boolean) => { this.guiSettings.enableSystemNotifications = flag; diff --git a/gui/src/renderer/app.tsx b/gui/src/renderer/app.tsx index 5fb48f701f..58243ce22a 100644 --- a/gui/src/renderer/app.tsx +++ b/gui/src/renderer/app.tsx @@ -276,6 +276,10 @@ export default class AppRenderer { return IpcRendererEventChannel.tunnel.disconnect(); } + public reconnectTunnel(): Promise<void> { + return IpcRendererEventChannel.tunnel.reconnect(); + } + public updateRelaySettings(relaySettings: RelaySettingsUpdate) { return IpcRendererEventChannel.settings.updateRelaySettings(relaySettings); } diff --git a/gui/src/renderer/components/Connect.tsx b/gui/src/renderer/components/Connect.tsx index 7f73fb7ea0..4cb63c6a5b 100644 --- a/gui/src/renderer/components/Connect.tsx +++ b/gui/src/renderer/components/Connect.tsx @@ -23,6 +23,7 @@ interface IProps { onSelectLocation: () => void; onConnect: () => void; onDisconnect: () => void; + onReconnect: () => void; onExternalLinkWithAuth: (url: string) => Promise<void>; } @@ -163,6 +164,7 @@ export default class Connect extends Component<IProps, IState> { country={this.props.connection.country} onConnect={this.props.onConnect} onDisconnect={this.props.onDisconnect} + onReconnect={this.props.onReconnect} onSelectLocation={this.props.onSelectLocation} /> diff --git a/gui/src/renderer/components/TunnelControl.tsx b/gui/src/renderer/components/TunnelControl.tsx index 700603bd2e..aa7c762d17 100644 --- a/gui/src/renderer/components/TunnelControl.tsx +++ b/gui/src/renderer/components/TunnelControl.tsx @@ -14,6 +14,7 @@ interface ITunnelControlProps { country?: string; onConnect: () => void; onDisconnect: () => void; + onReconnect: () => void; onSelectLocation: () => void; } diff --git a/gui/src/renderer/containers/ConnectPage.tsx b/gui/src/renderer/containers/ConnectPage.tsx index e5261a161a..e4c37f19cc 100644 --- a/gui/src/renderer/containers/ConnectPage.tsx +++ b/gui/src/renderer/containers/ConnectPage.tsx @@ -99,6 +99,13 @@ const mapDispatchToProps = (dispatch: ReduxDispatch, props: IAppContext) => { log.error(`Failed to disconnect the tunnel: ${error.message}`); } }, + onReconnect: async () => { + try { + await props.app.reconnectTunnel(); + } catch (error) { + log.error(`Failed to reconnect the tunnel: ${error.message}`); + } + }, onExternalLinkWithAuth: (url: string) => props.app.openLinkWithAuth(url), }; }; diff --git a/gui/src/shared/ipc-event-channel.ts b/gui/src/shared/ipc-event-channel.ts index a612660c99..5502a6698a 100644 --- a/gui/src/shared/ipc-event-channel.ts +++ b/gui/src/shared/ipc-event-channel.ts @@ -56,11 +56,13 @@ interface IReceiver<T> { interface ITunnelMethods extends IReceiver<TunnelState> { connect(): Promise<void>; disconnect(): Promise<void>; + reconnect(): Promise<void>; } interface ITunnelHandlers extends ISender<TunnelState> { handleConnect(fn: () => Promise<void>): void; handleDisconnect(fn: () => Promise<void>): void; + handleReconnect(fn: () => Promise<void>): void; } interface ISettingsMethods extends IReceiver<ISettings> { @@ -150,6 +152,7 @@ const DAEMON_DISCONNECTED = 'daemon-disconnected'; const TUNNEL_STATE_CHANGED = 'tunnel-state-changed'; const CONNECT_TUNNEL = 'connect-tunnel'; const DISCONNECT_TUNNEL = 'disconnect-tunnel'; +const RECONNECT_TUNNEL = 'reconnect-tunnel'; const SETTINGS_CHANGED = 'settings-changed'; const SET_ALLOW_LAN = 'set-allow-lan'; @@ -223,6 +226,7 @@ export class IpcRendererEventChannel { listen: listen(TUNNEL_STATE_CHANGED), connect: requestSender(CONNECT_TUNNEL), disconnect: requestSender(DISCONNECT_TUNNEL), + reconnect: requestSender(RECONNECT_TUNNEL), }; public static settings: ISettingsMethods = { @@ -315,6 +319,7 @@ export class IpcMainEventChannel { notify: sender(TUNNEL_STATE_CHANGED), handleConnect: requestHandler(CONNECT_TUNNEL), handleDisconnect: requestHandler(DISCONNECT_TUNNEL), + handleReconnect: requestHandler(RECONNECT_TUNNEL), }; public static location: ISender<ILocation> = { |
