diff --git a/app/Livewire/Mod/ModerationActionButton.php b/app/Livewire/Mod/ModerationActionButton.php index 5328746..638f843 100644 --- a/app/Livewire/Mod/ModerationActionButton.php +++ b/app/Livewire/Mod/ModerationActionButton.php @@ -2,18 +2,22 @@ namespace App\Livewire\Mod; -use App\Models\ModeratedModel; +use App\Models\Mod; +use App\Models\ModVersion; +use Illuminate\Support\Facades\Log; use Livewire\Attributes\On; use Livewire\Component; class ModerationActionButton extends Component { - public ModeratedModel $moderatedObject; + public ?string $moderatedObjectId = null; public string $guid = ''; public string $actionType; + public string $targetType = ''; + public bool $allowActions = false; public bool $isRunning = false; @@ -41,17 +45,57 @@ class ModerationActionButton extends Component #[On('startAction.{guid}')] public function invokeAction(): void { + if ($this->moderatedObjectId == null || $this->moderatedObjectId == '') { + Log::info('Failed: no ID specified.'); + + return; + } + + Log::info("Object ID: $this->moderatedObjectId"); + + if ($this->targetType !== 'mod' && $this->targetType !== 'modVersion') { + Log::info('Failed: invalid target type.'); + + return; + } + + switch ($this->targetType) { + case 'mod': + $moderatedObject = Mod::where('id', '=', $this->moderatedObjectId)->first(); + break; + + case 'modVersion': + $moderatedObject = ModVersion::where('id', '=', $this->moderatedObjectId)->first(); + break; + + default: + Log::info('Failed: invalid target type.'); + + return; + } + + if ($moderatedObject == null) { + Log::info('Failed: moderated object is null'); + + return; + } + switch ($this->actionType) { case 'delete': - $this->moderatedObject->delete(); + $moderatedObject->delete(); break; case 'enable': case 'disable': - $this->moderatedObject->toggleDisabled(); + $moderatedObject->toggleDisabled(); break; + + default: + Log::info('Failed: invalid action type.'); + + return; } $this->js('window.location.reload()'); diff --git a/app/Livewire/Mod/ModerationOptions.php b/app/Livewire/Mod/ModerationOptions.php index 02af7da..2a56948 100644 --- a/app/Livewire/Mod/ModerationOptions.php +++ b/app/Livewire/Mod/ModerationOptions.php @@ -2,12 +2,17 @@ namespace App\Livewire\Mod; -use App\Models\ModeratedModel; use Livewire\Component; class ModerationOptions extends Component { - public ModeratedModel $moderatedObject; + public string $objectId; + + public string $targetType; + + public bool $disabled; + + public string $displayName; public bool $showDeleteDialog = false; diff --git a/resources/views/livewire/mod/moderation-options.blade.php b/resources/views/livewire/mod/moderation-options.blade.php index 6626db4..f65c083 100644 --- a/resources/views/livewire/mod/moderation-options.blade.php +++ b/resources/views/livewire/mod/moderation-options.blade.php @@ -1,4 +1,4 @@ -
+
@@ -52,13 +52,13 @@ @push('modals') -

{{__('Confirm')}} {{__($this->moderatedObject->disabled ? 'Enable' : 'Disable')}}

+

{{__('Confirm')}} {{__($this->disabled ? 'Enable' : 'Disable')}}

-

Are you sure you want to {{__($this->moderatedObject->disabled ? 'enable' : 'disable')}} '{{$this->moderatedObject->getFriendlyName()}}'?

+

Are you sure you want to {{__($this->disabled ? 'enable' : 'disable')}} '{{$this->displayName}}'?

- +
@endpush @@ -69,10 +69,10 @@

{{ __('Confirm') }} {{ __('Delete') }}

-

Are you sure you want to {{__('delete')}} '{{$this->moderatedObject->getFriendlyName()}}'?

+

Are you sure you want to {{__('delete')}} '{{$this->displayName}}'?

- + @endpush diff --git a/resources/views/mod/show.blade.php b/resources/views/mod/show.blade.php index cb90e61..70eca38 100644 --- a/resources/views/mod/show.blade.php +++ b/resources/views/mod/show.blade.php @@ -13,7 +13,7 @@
@if (auth()->check() && auth()->user()->isModOrAdmin())
- +
@endif @if ($mod->featured && !$mod->disabled) @@ -112,7 +112,7 @@
@if (auth()->check() && auth()->user()->isModOrAdmin())
- +
@endif