album = $album; $this->images = $album->images; } #[On('image.rotate')] public function rotate(int $image_id, string $direction):void { $degrees = match ($direction) { 'cw' => -90, 'ccw' => 90, default => 0, }; $this->dispatchRotateJob(Image::findOrFail($image_id), $degrees); $this->redirect(route('album.show', $this->album), navigate: true); } private function dispatchRotateJob(Image $image, int $degrees) : void { $image->update([ 'isProcessing' => true, ]); Bus::chain([ new RotateImage($image, $degrees), Bus::batch([ new GenerateFullscreen($image), new GenerateThumbnail($image), ]), new FinishImageModification($image), ])->dispatch(); } #[Title('Show Album')] public function render(): View|Factory { return view('livewire.album.show'); } }