fix(livewire): scope DatabaseProxyStopped to proxy fields, harden status trait

Clickhouse, Dragonfly, and Keydb still called syncData() inside the
DatabaseProxyStopped broadcast handler, clobbering in-progress edits to
name/description/credentials. Refresh only is_public/public_port/
public_port_timeout instead, matching the pattern used elsewhere.

Also null-guard HasDatabaseStatusInfo::getListeners() against an absent
Auth::user()/currentTeam(), add explicit return types on getListeners()
and render(), and convert inline comments in the SSL refresh test to a
PHPDoc block.
This commit is contained in:
Aditya Tripathi committed 2026-05-21 10:24:49 +00:00
1 parent e7e65831a7
commit 7a3fcd37d5
5 files changed
+37 -18

No files matched your search

+17 -9
View File
@@ -5,6 +5,7 @@ namespace App\Traits;
use App\Helpers\SslHelper;
use Carbon\Carbon;
use Exception;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\Auth;
/**
@@ -51,16 +52,23 @@ trait HasDatabaseStatusInfo
return false;
}
public function getListeners()
public function getListeners(): array
{
$userId = Auth::id();
$teamId = Auth::user()->currentTeam()->id;
$listeners = ['databaseUpdated' => 'refresh'];
return [
"echo-private:user.{$userId},DatabaseStatusChanged" => 'refresh',
"echo-private:team.{$teamId},ServiceChecked" => 'refresh',
'databaseUpdated' => 'refresh',
];
$user = Auth::user();
if (! $user) {
return $listeners;
}
$listeners["echo-private:user.{$user->id},DatabaseStatusChanged"] = 'refresh';
$team = $user->currentTeam();
if ($team) {
$listeners["echo-private:team.{$team->id},ServiceChecked"] = 'refresh';
}
return $listeners;
}
public function mount(): void
@@ -150,7 +158,7 @@ trait HasDatabaseStatusInfo
}
}
public function render()
public function render(): View
{
return view('livewire.project.database.status-info', [
'label' => $this->databaseLabel(),