From c1704eef3ba12a16246a871586f208ecebb4bdde Mon Sep 17 00:00:00 2001 From: MartinOscar <40749467+rmartinoscar@users.noreply.github.com> Date: Sat, 15 Feb 2025 23:46:25 +0100 Subject: [PATCH] Interpret `Server` `StartupCommand` variables (#1009) * Use `StartupCommandService` * Simplify variable name * Add `PreviewStartupAction` --- .../ServerResource/Pages/EditServer.php | 7 +++-- .../Forms/Actions/PreviewStartupAction.php | 28 +++++++++++++++++++ app/Filament/Server/Pages/Startup.php | 5 ++++ 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 app/Filament/Components/Forms/Actions/PreviewStartupAction.php diff --git a/app/Filament/Admin/Resources/ServerResource/Pages/EditServer.php b/app/Filament/Admin/Resources/ServerResource/Pages/EditServer.php index 6f7856236..47bfcc299 100644 --- a/app/Filament/Admin/Resources/ServerResource/Pages/EditServer.php +++ b/app/Filament/Admin/Resources/ServerResource/Pages/EditServer.php @@ -7,6 +7,7 @@ use App\Enums\ServerState; use App\Enums\SuspendAction; use App\Filament\Admin\Resources\ServerResource; use App\Filament\Admin\Resources\ServerResource\RelationManagers\AllocationsRelationManager; +use App\Filament\Components\Forms\Actions\PreviewStartupAction; use App\Filament\Components\Forms\Actions\RotateDatabasePasswordAction; use App\Filament\Server\Pages\Console; use App\Models\Database; @@ -549,12 +550,14 @@ class EditServer extends EditRecord true => 'tabler-code-off', ]) ->required(), - + Hidden::make('previewing') + ->default(false), Textarea::make('startup') ->label(trans('admin/server.startup_cmd')) ->required() ->columnSpan(6) - ->autosize(), + ->autosize() + ->hintAction(PreviewStartupAction::make('preview')), Textarea::make('defaultStartup') ->hintAction(fn () => request()->isSecure() ? CopyAction::make() : null) diff --git a/app/Filament/Components/Forms/Actions/PreviewStartupAction.php b/app/Filament/Components/Forms/Actions/PreviewStartupAction.php new file mode 100644 index 000000000..699580b9d --- /dev/null +++ b/app/Filament/Components/Forms/Actions/PreviewStartupAction.php @@ -0,0 +1,28 @@ +action(function (Get $get, Set $set, Server $server) { + $active = $get('previewing'); + $set('previewing', !$active); + $set('startup', $active ? $server->startup : fn (Server $server, StartupCommandService $service) => $service->handle($server)); + }); + } +} diff --git a/app/Filament/Server/Pages/Startup.php b/app/Filament/Server/Pages/Startup.php index 1d592f95c..13b14284c 100644 --- a/app/Filament/Server/Pages/Startup.php +++ b/app/Filament/Server/Pages/Startup.php @@ -3,12 +3,14 @@ namespace App\Filament\Server\Pages; use App\Facades\Activity; +use App\Filament\Components\Forms\Actions\PreviewStartupAction; use App\Models\Permission; use App\Models\Server; use App\Models\ServerVariable; use Closure; use Filament\Facades\Filament; use Filament\Forms\Components\Component; +use Filament\Forms\Components\Hidden; use Filament\Forms\Components\Repeater; use Filament\Forms\Components\Section; use Filament\Forms\Components\Select; @@ -37,6 +39,8 @@ class Startup extends ServerFormPage 'lg' => 6, ]) ->schema([ + Hidden::make('previewing') + ->default(false), Textarea::make('startup') ->label('Startup Command') ->columnSpan([ @@ -46,6 +50,7 @@ class Startup extends ServerFormPage 'lg' => 4, ]) ->autosize() + ->hintAction(PreviewStartupAction::make('preview')) ->readOnly(), TextInput::make('custom_image') ->label('Docker Image')