From 765ce6a949e10e67e630eb3ac8d1c4a1c76a2018 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Ciarcin=CC=81ski?= Date: Mon, 17 Aug 2026 11:16:35 +0200 Subject: [PATCH] Allow only one all-traffic connection --- .../ConnectModal/hooks/useConnectModal.tsx | 2 + .../ConnectModalConnectionError.tsx | 7 +- .../LocationCard/api/connectError.ts | 26 ++--- .../components/LocationCardConnectButton.tsx | 2 + .../LocationCard/context/context.tsx | 8 +- .../LocationCardConnectionErrorView.tsx | 8 +- .../OverviewLocationCard.tsx | 6 + src-tauri/Cargo.lock | 105 ++++++++--------- src-tauri/client-cli/src/commands/connect.rs | 11 +- .../core/src/connection/active_connections.rs | 9 ++ src-tauri/core/src/connection/mod.rs | 81 ++++++++++++- src-tauri/core/src/connection/setup.rs | 2 +- .../core/src/database/models/location.rs | 107 +++++++++++++++--- src-tauri/core/src/database/models/tunnel.rs | 18 ++- .../database/models/tunnel_configuration.rs | 21 +--- src-tauri/core/src/error.rs | 2 + src-tauri/core/src/lib.rs | 10 +- src-tauri/src/commands.rs | 10 +- 18 files changed, 314 insertions(+), 121 deletions(-) diff --git a/new-ui/src/pages/full/OverviewPage/components/ConnectModal/hooks/useConnectModal.tsx b/new-ui/src/pages/full/OverviewPage/components/ConnectModal/hooks/useConnectModal.tsx index 4e79e839a..d7fd040f5 100644 --- a/new-ui/src/pages/full/OverviewPage/components/ConnectModal/hooks/useConnectModal.tsx +++ b/new-ui/src/pages/full/OverviewPage/components/ConnectModal/hooks/useConnectModal.tsx @@ -12,6 +12,7 @@ interface StoreValues { view: ConnectModalViewValue | null; perviousView: ConnectModalViewValue | null; postureError: string | null; + connectionError: string | null; autoStartOpenId: boolean; mfaMethod: MfaMethodValue; } @@ -23,6 +24,7 @@ const defaults: StoreValues = { view: null, perviousView: null, postureError: null, + connectionError: null, autoStartOpenId: false, } as const; diff --git a/new-ui/src/pages/full/OverviewPage/components/ConnectModal/views/ConnectModalConnectionError/ConnectModalConnectionError.tsx b/new-ui/src/pages/full/OverviewPage/components/ConnectModal/views/ConnectModalConnectionError/ConnectModalConnectionError.tsx index 5b74a1c94..b8758f529 100644 --- a/new-ui/src/pages/full/OverviewPage/components/ConnectModal/views/ConnectModalConnectionError/ConnectModalConnectionError.tsx +++ b/new-ui/src/pages/full/OverviewPage/components/ConnectModal/views/ConnectModalConnectionError/ConnectModalConnectionError.tsx @@ -2,17 +2,16 @@ import './style.scss'; import { Button } from '../../../../../../../shared/components/Button/Button'; import { ButtonVariant } from '../../../../../../../shared/components/Button/types'; import { Controls } from '../../../../../../../shared/components/Controls/Controls'; +import { DEFAULT_CONNECTION_ERROR } from '../../../../../../../shared/components/LocationCard/api/connectError'; import { useConnectModal } from '../../hooks/useConnectModal'; export const ConnectModalConnectionError = () => { const close = () => useConnectModal.setState({ visible: false }); + const connectionError = useConnectModal((s) => s.connectionError); return (
-

- One or more external services are unavailable or unreachable. This may be caused - by a network issue or a temporary service outage. Please try again later. -

+

{connectionError ?? DEFAULT_CONNECTION_ERROR}