summaryrefslogtreecommitdiffhomepage
path: root/gui/src/shared
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2022-01-14 14:56:43 +0100
committerOskar Nyberg <oskar@mullvad.net>2022-01-14 14:56:43 +0100
commit58b11439f6828b7f6973af49090be55a8dbf6aaa (patch)
treeb7f6f8fa4973a9b205d1bd3f7ded6278963726cc /gui/src/shared
parentfa62c258f0777b85e94b7df59f384f49686b04f9 (diff)
parentfb9242653d87daaffb1363f780942605af6cb490 (diff)
downloadmullvadvpn-58b11439f6828b7f6973af49090be55a8dbf6aaa.tar.xz
mullvadvpn-58b11439f6828b7f6973af49090be55a8dbf6aaa.zip
Merge branch 'refactor-optimistic-state'
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')
+ );
+}