From 04ea8b9ccb83597715404b2fbe70efc9f0824228 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Tue, 3 Dec 2024 10:17:41 -0500 Subject: [PATCH] use event instead of js timeout --- app/Livewire/Mod/ModerationActionButton.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/Livewire/Mod/ModerationActionButton.php b/app/Livewire/Mod/ModerationActionButton.php index b49176c..5328746 100644 --- a/app/Livewire/Mod/ModerationActionButton.php +++ b/app/Livewire/Mod/ModerationActionButton.php @@ -3,12 +3,15 @@ namespace App\Livewire\Mod; use App\Models\ModeratedModel; +use Livewire\Attributes\On; use Livewire\Component; class ModerationActionButton extends Component { public ModeratedModel $moderatedObject; + public string $guid = ''; + public string $actionType; public bool $allowActions = false; @@ -17,6 +20,11 @@ class ModerationActionButton extends Component protected $listeners = ['refreshComponent' => '$refresh']; + public function mount(): void + { + $this->guid = uniqid('', true); + } + public function render() { $this->allowActions = ! $this->isRunning; @@ -27,9 +35,10 @@ class ModerationActionButton extends Component public function runActionEvent(): void { $this->isRunning = true; - $this->js('setTimeout(function() { $wire.invokeAction(); }, 500)'); + $this->dispatch("startAction.{$this->guid}"); } + #[On('startAction.{guid}')] public function invokeAction(): void { switch ($this->actionType) {