Fix Egg select_startup default & update state (#1933)

This commit is contained in:
MartinOscar 2025-11-27 15:26:40 +00:00 committed by GitHub
parent cdccca8fa2
commit 78ab098d02
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 21 additions and 4 deletions

View File

@ -413,6 +413,7 @@ class CreateServer extends CreateRecord
Select::make('select_startup') Select::make('select_startup')
->label(trans('admin/server.startup_cmd')) ->label(trans('admin/server.startup_cmd'))
->hidden(fn (Get $get) => $get('egg_id') === null) ->hidden(fn (Get $get) => $get('egg_id') === null)
->required()
->live() ->live()
->afterStateUpdated(fn (Set $set, $state) => $set('startup', $state)) ->afterStateUpdated(fn (Set $set, $state) => $set('startup', $state))
->options(function ($state, Get $get, Set $set) { ->options(function ($state, Get $get, Set $set) {
@ -426,7 +427,7 @@ class CreateServer extends CreateRecord
$set('select_startup', $currentStartup); $set('select_startup', $currentStartup);
} }
return array_flip($startups) + ['' => 'Custom Startup']; return array_flip($startups) + ['custom' => 'Custom Startup'];
}) })
->selectablePlaceholder(false) ->selectablePlaceholder(false)
->columnSpanFull(), ->columnSpanFull(),
@ -444,7 +445,7 @@ class CreateServer extends CreateRecord
if (in_array($state, $startups)) { if (in_array($state, $startups)) {
$set('select_startup', $state); $set('select_startup', $state);
} else { } else {
$set('select_startup', ''); $set('select_startup', 'custom');
} }
}) })
->placeholder(trans('admin/server.startup_placeholder')) ->placeholder(trans('admin/server.startup_placeholder'))

View File

@ -797,6 +797,7 @@ class EditServer extends EditRecord
Select::make('select_startup') Select::make('select_startup')
->label(trans('admin/server.startup_cmd')) ->label(trans('admin/server.startup_cmd'))
->required()
->live() ->live()
->afterStateUpdated(function (Set $set, $state) { ->afterStateUpdated(function (Set $set, $state) {
$set('startup', $state); $set('startup', $state);
@ -813,7 +814,22 @@ class EditServer extends EditRecord
$set('select_startup', $currentStartup); $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) ->selectablePlaceholder(false)
->columnSpanFull() ->columnSpanFull()
@ -831,7 +847,7 @@ class EditServer extends EditRecord
if (in_array($state, $startups)) { if (in_array($state, $startups)) {
$set('select_startup', $state); $set('select_startup', $state);
} else { } else {
$set('select_startup', ''); $set('select_startup', 'custom');
} }
}) })
->placeholder(trans('admin/server.startup_placeholder')) ->placeholder(trans('admin/server.startup_placeholder'))