Fix ineffective restartInitiated guard with proper debouncing
The guard was setting and immediately resetting the flag in the same synchronous execution, providing no actual protection. Now the flag stays true until proxy reaches a stable state (running/exited/error) via WebSocket notification, with additional client-side guard. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
d53a12182e
commit
2fc870c6eb
2 changed files with 7 additions and 5 deletions
|
|
@ -67,7 +67,7 @@ public function restart()
|
|||
try {
|
||||
$this->authorize('manageProxy', $this->server);
|
||||
|
||||
// Prevent duplicate restart messages (e.g., from double-click or re-render)
|
||||
// Prevent duplicate restart calls
|
||||
if ($this->restartInitiated) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -75,10 +75,6 @@ public function restart()
|
|||
|
||||
// Always use background job for all servers
|
||||
RestartProxyJob::dispatch($this->server);
|
||||
// $this->dispatch('info', 'Proxy restart initiated.');
|
||||
|
||||
// Reset the flag after a short delay to allow future restarts
|
||||
$this->restartInitiated = false;
|
||||
|
||||
} catch (\Throwable $e) {
|
||||
$this->restartInitiated = false;
|
||||
|
|
@ -147,6 +143,11 @@ public function showNotification($event = null)
|
|||
$this->dispatch('activityMonitor', $event['activityId']);
|
||||
}
|
||||
|
||||
// Reset restart flag when proxy reaches a stable state
|
||||
if (in_array($this->proxyStatus, ['running', 'exited', 'error'])) {
|
||||
$this->restartInitiated = false;
|
||||
}
|
||||
|
||||
// Skip notification if we already notified about this status (prevents duplicates)
|
||||
if ($this->lastNotifiedStatus === $this->proxyStatus) {
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -181,6 +181,7 @@ class="flex items-center gap-6 overflow-x-scroll sm:overflow-x-hidden scrollbar
|
|||
}
|
||||
});
|
||||
$wire.$on('restartEvent', () => {
|
||||
if ($wire.restartInitiated) return;
|
||||
window.dispatchEvent(new CustomEvent('startproxy'))
|
||||
$wire.$call('restart');
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue