diff --git a/apps/desktop/src/components/connection/TunnelProfileManager.vue b/apps/desktop/src/components/connection/TunnelProfileManager.vue index df740ec44..b22b7d5fe 100644 --- a/apps/desktop/src/components/connection/TunnelProfileManager.vue +++ b/apps/desktop/src/components/connection/TunnelProfileManager.vue @@ -86,7 +86,7 @@ function invalidateProfileTest() { // Profile tests are asynchronous, so any selection or configuration change // must invalidate the request before it can publish a stale result. watch( - [selectedId, selectedSsh], + [selectedId, selectedSsh, selectedProxy], () => { invalidateProfileTest(); }, @@ -148,7 +148,7 @@ async function save() { } async function testSelected() { - const profile = selectedSsh.value; + const profile = selectedSsh.value || selectedProxy.value; if (!profile || isTesting.value) return; const profileSnapshot = cloneProfiles([profile])[0]; const requestId = testGuard.start(profileSnapshot); @@ -156,13 +156,13 @@ async function testSelected() { testResult.value = null; try { const message = await store.testProfile(profileSnapshot); - if (!testGuard.isCurrent(requestId, selectedSsh.value)) return; - testResult.value = { ok: true, message: message || t("settings.tunnelsTestSuccess") }; + if (!testGuard.isCurrent(requestId, profile)) return; + testResult.value = { ok: true, message: message ? t("settings.tunnelsTestSuccess") + ": " + message : t("settings.tunnelsTestSuccess") }; } catch (error) { - if (!testGuard.isCurrent(requestId, selectedSsh.value)) return; + if (!testGuard.isCurrent(requestId, profile)) return; testResult.value = { ok: false, message: t("settings.tunnelsTestFailed", { message: translateBackendError(t, String(error)) }) }; } finally { - if (testGuard.isCurrent(requestId, selectedSsh.value)) isTesting.value = false; + if (testGuard.isCurrent(requestId, selectedSsh.value || selectedProxy.value)) isTesting.value = false; } } @@ -288,6 +288,10 @@ async function testSelected() { +
+ + +