From 78ab098d024620425bd25a692a2e0eccd0356c1e Mon Sep 17 00:00:00 2001 From: MartinOscar <40749467+rmartinoscar@users.noreply.github.com> Date: Thu, 27 Nov 2025 15:26:40 +0000 Subject: [PATCH] Fix `Egg` select_startup default & update state (#1933) --- .../Resources/Servers/Pages/CreateServer.php | 5 +++-- .../Resources/Servers/Pages/EditServer.php | 20 +++++++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php b/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php index 7db8e8fc1..0ffb01293 100644 --- a/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php +++ b/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php @@ -413,6 +413,7 @@ class CreateServer extends CreateRecord Select::make('select_startup') ->label(trans('admin/server.startup_cmd')) ->hidden(fn (Get $get) => $get('egg_id') === null) + ->required() ->live() ->afterStateUpdated(fn (Set $set, $state) => $set('startup', $state)) ->options(function ($state, Get $get, Set $set) { @@ -426,7 +427,7 @@ class CreateServer extends CreateRecord $set('select_startup', $currentStartup); } - return array_flip($startups) + ['' => 'Custom Startup']; + return array_flip($startups) + ['custom' => 'Custom Startup']; }) ->selectablePlaceholder(false) ->columnSpanFull(), @@ -444,7 +445,7 @@ class CreateServer extends CreateRecord if (in_array($state, $startups)) { $set('select_startup', $state); } else { - $set('select_startup', ''); + $set('select_startup', 'custom'); } }) ->placeholder(trans('admin/server.startup_placeholder')) diff --git a/app/Filament/Admin/Resources/Servers/Pages/EditServer.php b/app/Filament/Admin/Resources/Servers/Pages/EditServer.php index 06e2679bc..2332ef860 100644 --- a/app/Filament/Admin/Resources/Servers/Pages/EditServer.php +++ b/app/Filament/Admin/Resources/Servers/Pages/EditServer.php @@ -797,6 +797,7 @@ class EditServer extends EditRecord Select::make('select_startup') ->label(trans('admin/server.startup_cmd')) + ->required() ->live() ->afterStateUpdated(function (Set $set, $state) { $set('startup', $state); @@ -813,7 +814,22 @@ class EditServer extends EditRecord $set('select_startup', $currentStartup); } - return array_flip($startups) + ['' => 'Custom Startup']; + return array_flip($startups) + ['custom' => 'Custom Startup']; + }) + ->formatStateUsing(function (Server $server) { + $startups = $server->egg->startup_commands; + + $currentStartup = $server->startup; + $matchingStartup = collect($startups) + ->filter(fn ($value, $key) => $value === $currentStartup) + ->keys() + ->first(); + + if (!$matchingStartup) { + return 'custom'; + } + + return $matchingStartup; }) ->selectablePlaceholder(false) ->columnSpanFull() @@ -831,7 +847,7 @@ class EditServer extends EditRecord if (in_array($state, $startups)) { $set('select_startup', $state); } else { - $set('select_startup', ''); + $set('select_startup', 'custom'); } }) ->placeholder(trans('admin/server.startup_placeholder'))