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 @@
-