Current state with latest updates
This commit is contained in:
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Observers;
|
||||
|
||||
use App\Jobs\GenerateFeaturedArtworkThumbnailsJob;
|
||||
use App\Models\Artwork;
|
||||
use App\Models\ArtworkFeature;
|
||||
use App\Services\HomepageService;
|
||||
@@ -21,12 +22,14 @@ final class ArtworkFeatureObserver
|
||||
public function created(ArtworkFeature $feature): void
|
||||
{
|
||||
$this->homepage->clearFeaturedAndMedalCaches();
|
||||
$this->queueFeaturedThumbnailRefresh($feature);
|
||||
$this->queueCreatorRebuild($feature);
|
||||
}
|
||||
|
||||
public function updated(ArtworkFeature $feature): void
|
||||
{
|
||||
$this->homepage->clearFeaturedAndMedalCaches();
|
||||
$this->queueFeaturedThumbnailRefresh($feature);
|
||||
$this->queueCreatorRebuild($feature);
|
||||
}
|
||||
|
||||
@@ -39,6 +42,7 @@ final class ArtworkFeatureObserver
|
||||
public function restored(ArtworkFeature $feature): void
|
||||
{
|
||||
$this->homepage->clearFeaturedAndMedalCaches();
|
||||
$this->queueFeaturedThumbnailRefresh($feature);
|
||||
$this->queueCreatorRebuild($feature);
|
||||
}
|
||||
|
||||
@@ -48,6 +52,31 @@ final class ArtworkFeatureObserver
|
||||
$this->queueCreatorRebuild($feature);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure the featured hero variants (and their DB-persisted existence state)
|
||||
* are ready before the next homepage guest-cache warm cycle picks this
|
||||
* artwork up as the hero winner, so the public request never has to check
|
||||
* the remote disk itself.
|
||||
*/
|
||||
private function queueFeaturedThumbnailRefresh(ArtworkFeature $feature): void
|
||||
{
|
||||
$artworkId = (int) $feature->artwork_id;
|
||||
|
||||
if ($artworkId <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
$artwork = $feature->relationLoaded('artwork')
|
||||
? $feature->artwork
|
||||
: Artwork::withTrashed()->find($artworkId);
|
||||
|
||||
if (! $artwork instanceof Artwork || empty($artwork->hash) || empty($artwork->file_ext)) {
|
||||
return;
|
||||
}
|
||||
|
||||
GenerateFeaturedArtworkThumbnailsJob::dispatch($artworkId);
|
||||
}
|
||||
|
||||
private function queueCreatorRebuild(ArtworkFeature $feature): void
|
||||
{
|
||||
$artwork = $feature->relationLoaded('artwork')
|
||||
|
||||
Reference in New Issue
Block a user