summaryrefslogtreecommitdiffhomepage
path: root/gui/src/shared
diff options
context:
space:
mode:
Diffstat (limited to 'gui/src/shared')
-rw-r--r--gui/src/shared/connect-helper.ts34
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')
+ );
+}