diff --git a/app/Filament/Server/Pages/Console.php b/app/Filament/Server/Pages/Console.php index 855da8585..938c7b409 100644 --- a/app/Filament/Server/Pages/Console.php +++ b/app/Filament/Server/Pages/Console.php @@ -38,10 +38,10 @@ class Console extends Page try { $server->validateCurrentState(); } catch (ServerStateConflictException $exception) { - AlertBanner::make() - ->warning() + AlertBanner::make('server_conflict') ->title('Warning') ->body($exception->getMessage()) + ->warning() ->send(); } } diff --git a/app/Filament/Server/Resources/FileResource/Pages/EditFiles.php b/app/Filament/Server/Resources/FileResource/Pages/EditFiles.php index 21821f9f3..b9ea5c3d9 100644 --- a/app/Filament/Server/Resources/FileResource/Pages/EditFiles.php +++ b/app/Filament/Server/Resources/FileResource/Pages/EditFiles.php @@ -149,7 +149,7 @@ class EditFiles extends Page $this->form->fill(); if (str($path)->endsWith('.pelicanignore')) { - AlertBanner::make() + AlertBanner::make('.pelicanignore_info') ->title('You\'re editing a .pelicanignore file!') ->body('Any files or directories listed in here will be excluded from backups. Wildcards are supported by using an asterisk (*).
You can negate a prior rule by prepending an exclamation point (!).') ->info() diff --git a/app/Filament/Server/Resources/FileResource/Pages/ListFiles.php b/app/Filament/Server/Resources/FileResource/Pages/ListFiles.php index 49ce60224..21ae6a00d 100644 --- a/app/Filament/Server/Resources/FileResource/Pages/ListFiles.php +++ b/app/Filament/Server/Resources/FileResource/Pages/ListFiles.php @@ -57,13 +57,18 @@ class ListFiles extends ListRecords public function mount(?string $path = null): void { parent::mount(); + $this->path = $path ?? '/'; try { $this->getDaemonFileRepository()->getDirectory('/'); } catch (ConnectionException) { $this->isDisabled = true; - $this->getFailureNotification(); + + AlertBanner::make('node_connection_error') + ->title('Could not connect to the node!') + ->danger() + ->send(); } } @@ -563,14 +568,6 @@ class ListFiles extends ListRecords return $this->fileRepository; } - public function getFailureNotification(): AlertBanner - { - return AlertBanner::make() - ->title('Could not connect to the node!') - ->danger() - ->send(); - } - public static function route(string $path): PageRegistration { return new PageRegistration( diff --git a/app/Filament/Server/Widgets/ServerConsole.php b/app/Filament/Server/Widgets/ServerConsole.php index fab490942..9560bf2e7 100644 --- a/app/Filament/Server/Widgets/ServerConsole.php +++ b/app/Filament/Server/Widgets/ServerConsole.php @@ -130,7 +130,7 @@ class ServerConsole extends Widget #[On('websocket-error')] public function websocketError(): void { - AlertBanner::make() + AlertBanner::make('websocket_error') ->title('Could not connect to websocket!') ->body('Check your browser console for more details.') ->danger() diff --git a/app/Livewire/AlertBanner.php b/app/Livewire/AlertBanner.php index a35ebae8f..773046081 100644 --- a/app/Livewire/AlertBanner.php +++ b/app/Livewire/AlertBanner.php @@ -44,9 +44,8 @@ final class AlertBanner implements Wireable public static function fromLivewire(mixed $value): AlertBanner { - $static = AlertBanner::make(); + $static = AlertBanner::make($value['id']); - $static->id($value['id']); $static->title($value['title']); $static->body($value['body']); $static->status($value['status']); diff --git a/app/Livewire/AlertBannerContainer.php b/app/Livewire/AlertBannerContainer.php index 8f2c03f3c..d5d7bf60c 100644 --- a/app/Livewire/AlertBannerContainer.php +++ b/app/Livewire/AlertBannerContainer.php @@ -3,6 +3,7 @@ namespace App\Livewire; use Illuminate\Contracts\View\View; +use Livewire\Attributes\On; use Livewire\Component; class AlertBannerContainer extends Component @@ -16,6 +17,7 @@ class AlertBannerContainer extends Component $this->pullFromSession(); } + #[On('alertBannerSent')] public function pullFromSession(): void { foreach (session()->pull('alert-banners', []) as $alertBanner) { diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 843169eff..acddc618e 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -37,8 +37,13 @@ use Illuminate\Support\Facades\URL; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Str; use Laravel\Sanctum\Sanctum; +use Livewire\Component; +use Livewire\Livewire; use Spatie\Health\Facades\Health; +use function Livewire\on; +use function Livewire\store; + class AppServiceProvider extends ServiceProvider { /** @@ -139,6 +144,22 @@ class AppServiceProvider extends ServiceProvider fn () => Blade::render('filament.layouts.footer'), ); + on('dehydrate', function (Component $component) { + if (!Livewire::isLivewireRequest()) { + return; + } + + if (store($component)->has('redirect')) { + return; + } + + if (count(session()->get('alert-banners') ?? []) <= 0) { + return; + } + + $component->dispatch('alertBannerSent'); + }); + // Don't run any health checks during tests if (!$app->runningUnitTests()) { Health::checks([ diff --git a/resources/views/livewire/alerts/alert-banner-container.blade.php b/resources/views/livewire/alerts/alert-banner-container.blade.php index b8a8402d5..3d1f34d3f 100644 --- a/resources/views/livewire/alerts/alert-banner-container.blade.php +++ b/resources/views/livewire/alerts/alert-banner-container.blade.php @@ -1,4 +1,4 @@ -
+
@foreach (array_values($alertBanners) as $alertBanner) @include('livewire.alerts.alert-banner', ['alertBanner' => $alertBanner]) @endforeach