Compare commits

...

2 Commits

Author SHA1 Message Date
Lance Pioch
00897426b3 Fix null coalescing for empty config fields
- Use ?: instead of ?? in EggTransformer so empty strings also fall back to '{}'
- Apply same null-safety to config_startup and config_logs json_decode calls
- Replace ineffective default('{}') with dehydrateStateUsing on EditEgg form
2026-02-07 21:59:32 -05:00
Lance Pioch
626d6371f7 Fix empty egg config_files causing fatal 500 error (#2195)
When the Configuration Files field on an egg is cleared and saved,
json_decode returns null which crashes the server creation/startup
flow with a TypeError. Handle null/empty config_files gracefully
at the service and transformer level, and add a default to the
edit form to match the create form.
2026-02-07 19:47:17 -05:00
3 changed files with 8 additions and 7 deletions

View File

@@ -318,6 +318,7 @@ class EditEgg extends EditRecord
->helperText(trans('admin/egg.start_config_help')),
Textarea::make('config_files')->rows(10)->json()
->label(trans('admin/egg.config_files'))
->dehydrateStateUsing(fn ($state) => blank($state) ? '{}' : $state)
->helperText(trans('admin/egg.config_files_help')),
Textarea::make('config_logs')->rows(10)->json()
->label(trans('admin/egg.log_config'))

View File

@@ -32,10 +32,10 @@ class EggConfigurationService
*/
public function handle(Server $server): array
{
$configs = $this->replacePlaceholders(
$server,
json_decode($server->egg->inherit_config_files)
);
$configFiles = json_decode($server->egg->inherit_config_files ?? '{}');
$configs = is_object($configFiles) || is_array($configFiles)
? $this->replacePlaceholders($server, $configFiles)
: [];
return [
'startup' => $this->convertStartupToNewFormat(json_decode($server->egg->inherit_config_startup, true)),

View File

@@ -36,7 +36,7 @@ class EggTransformer extends BaseTransformer
{
$model->loadMissing('configFrom');
$files = json_decode($model->inherit_config_files, true, 512, JSON_THROW_ON_ERROR);
$files = json_decode($model->inherit_config_files ?: '{}', true, 512, JSON_THROW_ON_ERROR);
$model->loadMissing('scriptFrom');
@@ -53,9 +53,9 @@ class EggTransformer extends BaseTransformer
'docker_images' => $model->docker_images,
'config' => [
'files' => $files,
'startup' => json_decode($model->inherit_config_startup, true),
'startup' => json_decode($model->inherit_config_startup ?: '{}', true),
'stop' => $model->inherit_config_stop,
'logs' => json_decode($model->inherit_config_logs, true),
'logs' => json_decode($model->inherit_config_logs ?: '{}', true),
'file_denylist' => $model->inherit_file_denylist,
'extends' => $model->config_from,
],