fix(proxy): defer UI refresh until Traefik version check completes

Fixes #7732 - The proxy status change listener was dispatching ProxyStatusChangedUI
before the Traefik version check job had a chance to run. This caused users to see
stale version information when they refreshed the page immediately after restarting
the proxy.

The fix defers the UI refresh when a Traefik version check is being dispatched. The
version check job already dispatches its own ProxyStatusChangedUI event when
complete, ensuring the UI refreshes with updated version data.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
Andras Bacsai
2025-12-27 15:16:58 +01:00
parent ef1abe17b8
commit 367d7eeabc

View File

@@ -29,7 +29,8 @@ class ProxyStatusChangedNotification implements ShouldQueueAfterCommit
$server->proxy->set('status', $status); $server->proxy->set('status', $status);
$server->save(); $server->save();
ProxyStatusChangedUI::dispatch($server->team_id); $versionCheckDispatched = false;
if ($status === 'running') { if ($status === 'running') {
$server->setupDefaultRedirect(); $server->setupDefaultRedirect();
$server->setupDynamicProxyConfiguration(); $server->setupDynamicProxyConfiguration();
@@ -40,7 +41,9 @@ class ProxyStatusChangedNotification implements ShouldQueueAfterCommit
if ($server->proxyType() === ProxyTypes::TRAEFIK->value) { if ($server->proxyType() === ProxyTypes::TRAEFIK->value) {
$traefikVersions = get_traefik_versions(); $traefikVersions = get_traefik_versions();
if ($traefikVersions !== null) { if ($traefikVersions !== null) {
// Version check job will dispatch ProxyStatusChangedUI when complete
CheckTraefikVersionForServerJob::dispatch($server, $traefikVersions); CheckTraefikVersionForServerJob::dispatch($server, $traefikVersions);
$versionCheckDispatched = true;
} else { } else {
Log::warning('Traefik version check skipped after proxy status change: versions.json data unavailable', [ Log::warning('Traefik version check skipped after proxy status change: versions.json data unavailable', [
'server_id' => $server->id, 'server_id' => $server->id,
@@ -49,6 +52,13 @@ class ProxyStatusChangedNotification implements ShouldQueueAfterCommit
} }
} }
} }
// Only dispatch UI refresh if version check wasn't dispatched
// (version check job handles its own UI refresh with updated version data)
if (! $versionCheckDispatched) {
ProxyStatusChangedUI::dispatch($server->team_id);
}
if ($status === 'created') { if ($status === 'created') {
instant_remote_process([ instant_remote_process([
'docker rm -f coolify-proxy', 'docker rm -f coolify-proxy',