fix: capture intended toggle action at click time to avoid stale isConnected in error toast

Store _pendingToggleAction before starting toggleProcess.
Use it in onExited instead of live root.isConnected.
Prevents 'Failed to disconnect' when user actually clicked connect.
Fixes #14
This commit is contained in:
Vybe (Coding Agent) 2026-05-21 07:04:29 +00:00
parent dce33692ad
commit 42d3bef5c6

View file

@ -12,6 +12,7 @@ PluginComponent {
property bool isConnected: false
property string tailscaleIP: ""
property string _pendingToggleAction: ""
property string currentExitNode: ""
property var peers: []
property string cachedClipboardTool: ""
@ -41,10 +42,11 @@ PluginComponent {
onExited: (code, status) => {
if (code !== 0) {
var action = root.isConnected ? "disconnect" : "connect"
var action = root._pendingToggleAction || (root.isConnected ? "disconnect" : "connect")
var detail = toggleProcess.stderr.text.trim().slice(0, 120)
ToastService.showError("tailscalectl", TailscaleLib.errorMessage(action) + (detail ? " — " + detail : ""))
}
root._pendingToggleAction = ""
statusCheck.running = true
}
}
@ -112,6 +114,7 @@ PluginComponent {
}
function toggleTailscale() {
root._pendingToggleAction = root.isConnected ? "disconnect" : "connect"
toggleProcess.command = TailscaleLib.buildToggleCommand(root.isConnected)
toggleProcess.running = true
}