diff --git a/app/Livewire/Mod/ModerationActionButton.php b/app/Livewire/Mod/ModerationActionButton.php new file mode 100644 index 0000000..131ff20 --- /dev/null +++ b/app/Livewire/Mod/ModerationActionButton.php @@ -0,0 +1,48 @@ + '$refresh']; + + public function render() + { + $this->allowActions = ! $this->isRunning; + + return view('livewire.mod.moderation-action-button'); + } + + public function runActionEvent(): void + { + $this->isRunning = true; + defer(fn () => $this->invokeAction()); + $this->js('setTimeout(3000, window.location.reload())'); + } + + public function invokeAction(): void + { + switch ($this->actionType) { + case 'delete': + + $this->moderatedObject->delete(); + + case 'enable': + case 'disable': + + $this->moderatedObject->toggleDisabled(); + + } + } +} diff --git a/app/Livewire/Mod/ModerationOptions.php b/app/Livewire/Mod/ModerationOptions.php index 135b930..02af7da 100644 --- a/app/Livewire/Mod/ModerationOptions.php +++ b/app/Livewire/Mod/ModerationOptions.php @@ -9,20 +9,22 @@ class ModerationOptions extends Component { public ModeratedModel $moderatedObject; + public bool $showDeleteDialog = false; + + public bool $showDisableDialog = false; + public function render() { return view('livewire.mod.moderation-options'); } - public function delete(): void + public function confirmDelete(): void { - $this->moderatedObject->delete(); - $this->js('window.location.reload()'); + $this->showDeleteDialog = true; } - public function toggleDisabled(): void + public function confirmDisable(): void { - $this->moderatedObject->toggleDisabled(); - $this->js('window.location.reload()'); + $this->showDisableDialog = true; } } diff --git a/resources/views/livewire/mod/moderation-action-button.blade.php b/resources/views/livewire/mod/moderation-action-button.blade.php new file mode 100644 index 0000000..3a63a49 --- /dev/null +++ b/resources/views/livewire/mod/moderation-action-button.blade.php @@ -0,0 +1,18 @@ +