clusev/app/Livewire/ServerSwitcher.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,
]);
}
}