From 20b06b7b39d4369972d5d3880a3e6fcd204b6466 Mon Sep 17 00:00:00 2001 From: Boy132 Date: Tue, 20 Aug 2024 22:45:41 +0200 Subject: [PATCH] Fix variables on CreateServer page (#558) --- .../ServerResource/Pages/CreateServer.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/app/Filament/Resources/ServerResource/Pages/CreateServer.php b/app/Filament/Resources/ServerResource/Pages/CreateServer.php index 9f2de64b9..9c2c32da9 100644 --- a/app/Filament/Resources/ServerResource/Pages/CreateServer.php +++ b/app/Filament/Resources/ServerResource/Pages/CreateServer.php @@ -6,7 +6,6 @@ use App\Filament\Resources\ServerResource; use App\Models\Allocation; use App\Models\Egg; use App\Models\Node; -use App\Models\ServerVariable; use App\Models\User; use App\Services\Allocations\AssignmentService; use App\Services\Servers\RandomWordService; @@ -444,7 +443,7 @@ class CreateServer extends CreateRecord $text = Forms\Components\TextInput::make('variable_value') ->hidden($this->shouldHideComponent(...)) - ->required(fn (ServerVariable $serverVariable) => $serverVariable->variable->getRequiredAttribute()) + ->required(fn (Forms\Get $get) => in_array('required', $get('rules'))) ->rules( fn (Forms\Get $get): Closure => function (string $attribute, $value, Closure $fail) use ($get) { $validator = Validator::make(['validatorkey' => $value], [ @@ -471,7 +470,7 @@ class CreateServer extends CreateRecord ->live(onBlur: true) ->hintIcon('tabler-code') ->label(fn (Forms\Get $get) => $get('name')) - ->hintIconTooltip(fn (Forms\Get $get) => $get('rules')) + ->hintIconTooltip(fn (Forms\Get $get) => implode('|', $get('rules'))) ->prefix(fn (Forms\Get $get) => '{{' . $get('env_variable') . '}}') ->helperText(fn (Forms\Get $get) => empty($get('description')) ? '—' : $get('description')) ->afterStateUpdated(function (Forms\Set $set, Forms\Get $get, $state) { @@ -806,9 +805,11 @@ class CreateServer extends CreateRecord return $service->handle($data); } - private function shouldHideComponent(ServerVariable $serverVariable, Forms\Components\Component $component): bool + private function shouldHideComponent(Forms\Get $get, Forms\Components\Component $component): bool { - $containsRuleIn = array_first($serverVariable->variable->rules, fn ($value) => str($value)->startsWith('in:'), false); + $containsRuleIn = collect($get('rules'))->reduce( + fn ($result, $value) => $result === true && !str($value)->startsWith('in:'), true + ); if ($component instanceof Forms\Components\Select) { return $containsRuleIn; @@ -821,9 +822,11 @@ class CreateServer extends CreateRecord throw new \Exception('Component type not supported: ' . $component::class); } - private function getSelectOptionsFromRules(ServerVariable $serverVariable): array + private function getSelectOptionsFromRules(Forms\Get $get): array { - $inRule = array_first($serverVariable->variable->rules, fn ($value) => str($value)->startsWith('in:')); + $inRule = collect($get('rules'))->reduce( + fn ($result, $value) => str($value)->startsWith('in:') ? $value : $result, '' + ); return str($inRule) ->after('in:')