diff options
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') + ); +} |
