pelican-panel-mirror/app/Livewire/AlertBannerContainer.php
Boy132 7471347b55
Improve alert banner fetching (#1173)
* use events for alert banner pulling

* add ids to alert banners to prevent duplicates
2025-03-28 23:50:34 +01:00

40 lines
910 B
PHP

<?php
namespace App\Livewire;
use Illuminate\Contracts\View\View;
use Livewire\Attributes\On;
use Livewire\Component;
class AlertBannerContainer extends Component
{
/** @var array<AlertBanner> */
public array $alertBanners;
public function mount(): void
{
$this->alertBanners = [];
$this->pullFromSession();
}
#[On('alertBannerSent')]
public function pullFromSession(): void
{
foreach (session()->pull('alert-banners', []) as $alertBanner) {
$alertBanner = AlertBanner::fromLivewire($alertBanner);
$this->alertBanners[$alertBanner->getId()] = $alertBanner;
}
}
public function remove(string $id): void
{
$alertBanners = &$this->alertBanners;
unset($alertBanners[$id]);
}
public function render(): View
{
return view('livewire.alerts.alert-banner-container');
}
}