diff --git a/app/Filament/Pages/PanelSettings.php b/app/Filament/Pages/PanelSettings.php index d9a6453..299a63c 100644 --- a/app/Filament/Pages/PanelSettings.php +++ b/app/Filament/Pages/PanelSettings.php @@ -4,6 +4,7 @@ namespace App\Filament\Pages; use App\Helper\ColorHelper; use BackedEnum; +use Filament\Actions\Action; use Filament\Facades\Filament; use Filament\Forms\Components\ColorPicker; use Filament\Forms\Components\FileUpload; @@ -13,6 +14,7 @@ use Filament\Forms\Components\TagsInput; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; use Filament\Forms\Components\Toggle; +use Filament\Notifications\Notification; use Inerba\DbConfig\AbstractPageSettings; use Filament\Schemas\Components; use Filament\Schemas\Schema; @@ -74,6 +76,25 @@ class PanelSettings extends AbstractPageSettings ]; } + public function getHeaderActions(): array + { + return [ + Action::make('filament-optimize') + ->label('Optimize Filament') + ->color('gray') + ->icon('heroicon-o-paper-airplane') + ->action(fn() => $this->filamentOptimize()), + + Action::make('filament-optimize-clear') + ->label('Clear Optimized Files') + ->color('danger') + ->icon('heroicon-o-trash') + ->action(fn() => $this->filamentOptimizeClear()), + + ...parent::getHeaderActions(), + ]; + } + public function form(Schema $schema): Schema { return $schema @@ -283,4 +304,37 @@ class PanelSettings extends AbstractPageSettings ]) ->statePath('data'); } + + private function filamentOptimize(): void + { + try { + \Artisan::queue('filament:optimize'); + Notification::make() + ->title('Filament optimization successful!') + ->success() + ->send(); + } catch (\Exception $e) { + \Log::error('Filament optimization failed', ['exception' => $e->getMessage()]); + Notification::make() + ->title('Filament optimization failed: ' . $e->getMessage()) + ->danger() + ->send(); + } + } + private function filamentOptimizeClear(): void + { + try { + \Artisan::queue('filament:optimize-clear'); + Notification::make() + ->title('Cache files cleared successful!') + ->success() + ->send(); + } catch (\Exception $e) { + \Log::error('Filament optimize clear failed', ['exception' => $e->getMessage()]); + Notification::make() + ->title('Failed to clear cache files: ' . $e->getMessage()) + ->danger() + ->send(); + } + } }