diff options
| author | Oskar Nyberg <oskar@mullvad.net> | 2022-01-13 10:04:26 +0100 |
|---|---|---|
| committer | Oskar Nyberg <oskar@mullvad.net> | 2022-01-14 14:55:20 +0100 |
| commit | fb9242653d87daaffb1363f780942605af6cb490 (patch) | |
| tree | b7f6f8fa4973a9b205d1bd3f7ded6278963726cc /gui/src/shared | |
| parent | fa62c258f0777b85e94b7df59f384f49686b04f9 (diff) | |
| download | mullvadvpn-fb9242653d87daaffb1363f780942605af6cb490.tar.xz mullvadvpn-fb9242653d87daaffb1363f780942605af6cb490.zip | |
Refactor optimistic tunnel state
Diffstat (limited to 'gui/src/shared')
| -rw-r--r-- | gui/src/shared/connect-helper.ts | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/gui/src/shared/connect-helper.ts b/gui/src/shared/connect-helper.ts new file mode 100644 index 0000000000..214d22a59a --- /dev/null +++ b/gui/src/shared/connect-helper.ts @@ -0,0 +1,34 @@ +import { AccountToken, TunnelState } from './daemon-rpc-types'; + +export function connectEnabled( + connectedToDaemon: boolean, + accountToken: AccountToken | undefined, + tunnelState: TunnelState['state'], +) { + return ( + connectedToDaemon && + accountToken !== undefined && + (tunnelState === 'disconnected' || tunnelState === 'disconnecting' || tunnelState === 'error') + ); +} + +export function reconnectEnabled( + connectedToDaemon: boolean, + accountToken: AccountToken | undefined, + tunnelState: TunnelState['state'], +) { + return ( + connectedToDaemon && + accountToken !== undefined && + (tunnelState === 'connected' || tunnelState === 'connecting') + ); +} + +// Disconnecting while logged out is allowed since it's possible to "connect" and end up in the +// blocked state with the CLI. +export function disconnectEnabled(connectedToDaemon: boolean, tunnelState: TunnelState['state']) { + return ( + connectedToDaemon && + (tunnelState === 'connected' || tunnelState === 'connecting' || tunnelState === 'error') + ); +} |
