Add stop confirmation to client power action
Build and Deploy Gateway / build-and-push (push) Successful in 17s
Build and Deploy Gateway / deploy (push) Successful in 7s

This commit is contained in:
2026-07-15 15:25:10 +03:00
parent b4adcce26a
commit c6d3fd39fb
3 changed files with 34 additions and 4 deletions
+23 -2
View File
@@ -644,6 +644,7 @@ export function ClientOverviewPage({
const [localRulesRevision, setLocalRulesRevision] = useState(state?.route?.localRulesRevision || 0);
const [confirmingLocalRulesClose, setConfirmingLocalRulesClose] = useState(false);
const [confirmingDelete, setConfirmingDelete] = useState(false);
const [confirmingStop, setConfirmingStop] = useState(false);
const [openInstructionId, setOpenInstructionId] = useState('');
const subscriptionInputRef = useRef(null);
const subscriptionRef = useRef(null);
@@ -899,13 +900,21 @@ export function ClientOverviewPage({
return () => document.removeEventListener('pointerdown', closeInstructionsOutside);
}, [instructionsOpen]);
async function toggleConnection() {
function toggleConnection() {
const action = connectionAction({ connected, selectedServerId, configExists: state?.configExists });
if (action?.type === 'stop') return onStop();
if (action?.type === 'stop') {
setConfirmingStop(true);
return;
}
if (action?.type === 'apply') return onApply(action.serverId);
if (action?.type === 'restart') return onRestart();
}
async function stopConnection() {
if (!await onStop()) return;
setConfirmingStop(false);
}
function selectServer(serverId) {
setPendingServerId(serverId);
if (connected && serverId) onApply(serverId);
@@ -1443,6 +1452,18 @@ export function ClientOverviewPage({
onClose={requestCloseLocalRules}
onSave={saveLocalRules}
/>}
<ConfirmationPopup
open={confirmingStop}
id="stop-connection"
kicker="Защита от случайного отключения"
title="Отключить VPN?"
description="Harbor остановит текущее VPN-подключение. Локальный прокси перестанет передавать трафик до повторного включения."
cancelLabel="Оставить включённым"
confirmLabel="Отключить VPN"
busy={connectionBlocked}
onCancel={() => setConfirmingStop(false)}
onConfirm={stopConnection}
/>
<ConfirmationPopup
open={confirmingLocalRulesClose}
id="discard-local-rules"