diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2018-12-17 20:43:48 +0100 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2018-12-18 15:58:22 +0100 |
| commit | cddac494b349c3bbeb7cd8db2b0a2b7d32eb2832 (patch) | |
| tree | 3fa4ca5289eaaddbfbe8210e4e469c2492808820 /gui/packages | |
| parent | e26d4e467b87ab980fbbb5792f7444985e55edaf (diff) | |
| download | mullvadvpn-cddac494b349c3bbeb7cd8db2b0a2b7d32eb2832.tar.xz mullvadvpn-cddac494b349c3bbeb7cd8db2b0a2b7d32eb2832.zip | |
Allow connecting a tunnel in a disconnecting state
Diffstat (limited to 'gui/packages')
| -rw-r--r-- | gui/packages/desktop/src/renderer/app.js | 18 | ||||
| -rw-r--r-- | gui/packages/desktop/src/renderer/containers/ConnectPage.js | 4 |
2 files changed, 13 insertions, 9 deletions
diff --git a/gui/packages/desktop/src/renderer/app.js b/gui/packages/desktop/src/renderer/app.js index 0f281ab42c..70fe1365d7 100644 --- a/gui/packages/desktop/src/renderer/app.js +++ b/gui/packages/desktop/src/renderer/app.js @@ -228,20 +228,24 @@ export default class AppRenderer { } } - async connectTunnel() { - const actions = this._reduxActions; + async connectTunnel(): Promise<void> { + const state = this._tunnelState.state; // connect only if tunnel is disconnected or blocked. - if (this._tunnelState.state === 'disconnected' || this._tunnelState.state === 'blocked') { - // switch to connecting state immediately to prevent a lag that may be caused by RPC - // communication delay - actions.connection.connecting(null); + if (state === 'disconnecting' || state === 'disconnected' || state === 'blocked') { + // switch to the connecting state ahead of time to make the app look more responsive + this._reduxActions.connection.connecting(null); - await this._daemonRpc.connectTunnel(); + return this._daemonRpc.connectTunnel(); } } disconnectTunnel() { + const actions = this._reduxActions; + + // switch to disconnected state ahead of time to make the app look more responsive + actions.connection.disconnected(); + return this._daemonRpc.disconnectTunnel(); } diff --git a/gui/packages/desktop/src/renderer/containers/ConnectPage.js b/gui/packages/desktop/src/renderer/containers/ConnectPage.js index f433a795e2..57ca284c4b 100644 --- a/gui/packages/desktop/src/renderer/containers/ConnectPage.js +++ b/gui/packages/desktop/src/renderer/containers/ConnectPage.js @@ -82,9 +82,9 @@ const mapDispatchToProps = (dispatch: ReduxDispatch, props: SharedRouteProps) => onSelectLocation: () => { history.push('/select-location'); }, - onConnect: () => { + onConnect: async () => { try { - props.app.connectTunnel(); + await props.app.connectTunnel(); } catch (error) { log.error(`Failed to connect the tunnel: ${error.message}`); } |
