Skip to content

Commit

Permalink
Merge pull request #4 from teamnovu/feature/improve-performance
Browse files Browse the repository at this point in the history
Feature/improve performance
  • Loading branch information
Kylewalow authored Oct 10, 2023
2 parents 4a0096b + 73d25b2 commit b2a8099
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 55 deletions.
64 changes: 64 additions & 0 deletions src/Jobs/UpdateMissingAltCacheJob.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<?php

namespace Teamnovu\StatamicImagesMissingAlt\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUniqueUntilProcessing;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\Middleware\WithoutOverlapping;
use Illuminate\Queue\SerializesModels;
use Statamic\Assets\Asset;

class UpdateMissingAltCacheJob implements ShouldQueue, ShouldBeUniqueUntilProcessing
{
use Dispatchable;
use InteractsWithQueue;
use Queueable;
use SerializesModels;

public $tries = 2;

protected $event;

/**
* @return void
*/
public function __construct($event)
{
$this->event = $event;
}

public function handle(\Teamnovu\StatamicImagesMissingAlt\Services\Service $service)
{
$service->clearCache($this->getAssetContainerHandle());
$service->preloadCache($this->getAssetContainerHandle());
}

/**
* Get the middleware the job should pass through.
*
* @return array<int, object>
*/
public function middleware()
{
return [(new WithoutOverlapping($this->getAssetContainerHandle()))->releaseAfter(60)->expireAfter(180)];
}

/**
* Get the unique ID for the job.
*/
public function uniqueId(): string
{
return $this->getAssetContainerHandle();
}

private function getAssetContainerHandle(): string
{
/** @var Asset $asset */
$asset = $this->event->asset;

return $asset->container()->handle();
}
}
41 changes: 0 additions & 41 deletions src/Listeners/UpdateImagesMissingAltCache.php

This file was deleted.

29 changes: 29 additions & 0 deletions src/Listeners/UpdateImagesMissingAltCacheListener.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php

namespace Teamnovu\StatamicImagesMissingAlt\Listeners;

use Statamic\Events\AssetDeleted;
use Statamic\Events\AssetSaved;
use Statamic\Events\AssetUploaded;
use Teamnovu\StatamicImagesMissingAlt\Jobs\UpdateMissingAltCacheJob;

class UpdateImagesMissingAltCacheListener
{
public function handle($event)
{
UpdateMissingAltCacheJob::dispatch($event);
}

/**
* Register the listeners for the subscriber.
*
* @param \Illuminate\Events\Dispatcher $events
* @return void
*/
public function subscribe($events)
{
$events->listen(AssetDeleted::class, [self::class, 'handle']);
$events->listen(AssetSaved::class, [self::class, 'handle']);
$events->listen(AssetUploaded::class, [self::class, 'handle']);
}
}
17 changes: 3 additions & 14 deletions src/ServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,13 @@

namespace Teamnovu\StatamicImagesMissingAlt;

use Statamic\Events\AssetDeleted;
use Statamic\Events\AssetSaved;
use Statamic\Events\AssetUploaded;
use Statamic\Providers\AddonServiceProvider;
use Teamnovu\StatamicImagesMissingAlt\Listeners\UpdateImagesMissingAltCache;
use Teamnovu\StatamicImagesMissingAlt\Listeners\UpdateImagesMissingAltCacheListener;

class ServiceProvider extends AddonServiceProvider
{
protected $listen = [
AssetDeleted::class => [
UpdateImagesMissingAltCache::class,
],
AssetSaved::class => [
UpdateImagesMissingAltCache::class,
],
AssetUploaded::class => [
UpdateImagesMissingAltCache::class,
],
protected $subscribe = [
UpdateImagesMissingAltCacheListener::class,
];

protected $widgets = [
Expand Down

0 comments on commit b2a8099

Please sign in to comment.