From bacf35bb4bc080d102feddba5d74f62399469d70 Mon Sep 17 00:00:00 2001 From: James Collins Date: Wed, 26 Apr 2023 21:15:27 +1000 Subject: [PATCH] use webp --- app/Console/Commands/MediaRebuild.php | 16 +++++++++++++++- app/Jobs/StoreUploadedFileJob.php | 8 ++++++-- resources/js/views/dashboard/MediaEdit.vue | 2 +- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/app/Console/Commands/MediaRebuild.php b/app/Console/Commands/MediaRebuild.php index 3515445..a60d64a 100644 --- a/app/Console/Commands/MediaRebuild.php +++ b/app/Console/Commands/MediaRebuild.php @@ -37,6 +37,13 @@ class MediaRebuild extends Command InputOption::VALUE_NONE, 'Replace existing files' ); + + $this->addOption( + 'all', + null, + InputOption::VALUE_NONE, + 'Rebuild all variants' + ); } /** @@ -47,8 +54,15 @@ class MediaRebuild extends Command public function handle() { $replace = $this->option('replace'); + $all = $this->option('replace'); + + $media = []; + if ($all === true) { + $media = Media::all(); + } else { + $media = Media::where(['variants' => ''])->orWhere(['variants' => '[]'])->orWhere(['variants' => '{}'])->get(); + } - $media = Media::where(['variants' => ''])->orWhere(['variants' => '[]'])->orWhere(['variants' => '{}'])->get(); foreach ($media as $medium) { StoreUploadedFileJob::dispatch($medium, '', $replace)->onQueue('media'); } diff --git a/app/Jobs/StoreUploadedFileJob.php b/app/Jobs/StoreUploadedFileJob.php index aa52f4d..29f8242 100644 --- a/app/Jobs/StoreUploadedFileJob.php +++ b/app/Jobs/StoreUploadedFileJob.php @@ -128,9 +128,13 @@ class StoreUploadedFileJob implements ShouldQueue $postfix = 'scaled'; } - $newFilename = pathinfo($this->media->name, PATHINFO_FILENAME) . "-$postfix." . pathinfo($this->media->name, PATHINFO_EXTENSION); + if (is_array($this->media->variants) === true && array_key_exists($postfix, $this->media->variants) === true && Storage::disk($storageDisk)->exists($this->media->variants[$postfix]) === true && $this->replaceExisting === true) { + Storage::disk($storageDisk)->delete($this->media->variants[$postfix]); + } - if (Storage::disk($storageDisk)->exists($newFilename) == false || $this->replaceExisting == true) { + $newFilename = pathinfo($this->media->name, PATHINFO_FILENAME) . "-$postfix.webp"; + + if (Storage::disk($storageDisk)->exists($newFilename) === false || $this->replaceExisting === true) { // Get the largest available variant if ($dimensions[0] >= $size[0] && $dimensions[1] >= $size[1]) { // Store the variant in the variants array diff --git a/resources/js/views/dashboard/MediaEdit.vue b/resources/js/views/dashboard/MediaEdit.vue index 57746eb..ae50f9f 100644 --- a/resources/js/views/dashboard/MediaEdit.vue +++ b/resources/js/views/dashboard/MediaEdit.vue @@ -288,7 +288,7 @@ watch( () => form.controls.file.value, (newValue) => { fileData.mime_type = (newValue as File).type; - fileData.size = (newValue as File).size.toString(); + fileData.size = (newValue as File).size; if ((form.controls.title.value as string).length == 0) { form.controls.title.value = (newValue as File).name