37 lines
1005 B
PHP
37 lines
1005 B
PHP
<?php
|
|
|
|
namespace App\Livewire;
|
|
|
|
use App\Models\Server;
|
|
use Livewire\Component;
|
|
|
|
/**
|
|
* Sidebar fleet switcher. Lives in the persistent layout, so it survives
|
|
* wire:navigate. Selecting a server stores it in the session and reloads the
|
|
* current page so every panel reflects the new active server.
|
|
*/
|
|
class ServerSwitcher extends Component
|
|
{
|
|
public function select(string $uuid): void
|
|
{
|
|
$server = Server::where('uuid', $uuid)->firstOrFail();
|
|
|
|
session(['active_server_id' => $server->id]);
|
|
|
|
$this->redirect(request()->header('Referer') ?: route('dashboard'), navigate: true);
|
|
}
|
|
|
|
public function render()
|
|
{
|
|
$servers = Server::orderBy('name')->get();
|
|
$active = $servers->firstWhere('id', session('active_server_id'))
|
|
?? $servers->firstWhere('status', 'online')
|
|
?? $servers->first();
|
|
|
|
return view('livewire.server-switcher', [
|
|
'servers' => $servers,
|
|
'active' => $active,
|
|
]);
|
|
}
|
|
}
|