diff --git a/extensions/Servers/Proxmox/Livewire/Firewall.php b/extensions/Servers/Proxmox/Livewire/Firewall.php index 3e98c1d89..5f4ef593b 100644 --- a/extensions/Servers/Proxmox/Livewire/Firewall.php +++ b/extensions/Servers/Proxmox/Livewire/Firewall.php @@ -243,11 +243,11 @@ class Firewall extends Component $this->showRuleForm = true; } - public function startEditRule(int $pos): void + public function startEditRule(int $index): void { - $rule = collect($this->rules)->firstWhere('pos', $pos); - if ($rule) { - $this->editingRulePos = $pos; + if (isset($this->rules[$index])) { + $rule = $this->rules[$index]; + $this->editingRulePos = $rule['pos']; $this->showRuleForm = true; $this->ruleAction = $rule['action'] ?? 'ACCEPT'; $this->ruleSource = $rule['source'] ?? ''; @@ -380,26 +380,24 @@ class Firewall extends Component } } - public function toggleRule(int $pos): void + public function toggleRule(int $index): void { try { - // Find the rule to get its current enable state - $ruleIndex = collect($this->rules)->search(function ($rule) use ($pos) { - return ($rule['pos'] ?? 0) == $pos; - }); - - if ($ruleIndex === false) { + if (!isset($this->rules[$index])) { $this->error = 'Rule not found'; $this->showErrorModal = true; return; } + $rule = $this->rules[$index]; + $pos = $rule['pos']; + // Toggle the enable state (0 = disabled, 1 = enabled) - $currentEnable = isset($this->rules[$ruleIndex]['enable']) ? (int)$this->rules[$ruleIndex]['enable'] : 1; + $currentEnable = isset($rule['enable']) ? (int)$rule['enable'] : 1; $newEnable = $currentEnable == 0 ? 1 : 0; // Optimistically update the local state for immediate UI feedback - $this->rules[$ruleIndex]['enable'] = $newEnable; + $this->rules[$index]['enable'] = $newEnable; // Update only the enable field $response = $this->firewallRequest( @@ -414,7 +412,7 @@ class Firewall extends Component $this->loadFirewallRules(); } else { // Revert the optimistic update on failure - $this->rules[$ruleIndex]['enable'] = $currentEnable; + $this->rules[$index]['enable'] = $currentEnable; $message = $response->json()['errors'][0]['message'] ?? 'Unknown error'; $this->error = 'Failed to toggle rule: ' . $message; $this->showErrorModal = true; @@ -437,10 +435,12 @@ class Firewall extends Component } } - public function confirmDeleteRule(int $pos): void + public function confirmDeleteRule(int $index): void { - $this->deletingRulePos = $pos; - $this->showDeleteModal = true; + if (isset($this->rules[$index])) { + $this->deletingRulePos = $this->rules[$index]['pos']; + $this->showDeleteModal = true; + } } public function cancelDeleteRule(): void diff --git a/extensions/Servers/Proxmox/views/firewall.blade.php b/extensions/Servers/Proxmox/views/firewall.blade.php index b4e4928ad..58ab1f6cb 100644 --- a/extensions/Servers/Proxmox/views/firewall.blade.php +++ b/extensions/Servers/Proxmox/views/firewall.blade.php @@ -607,7 +607,8 @@ -