From fe393c80a5ca5a32eb1920932587fd4c0aae7caa Mon Sep 17 00:00:00 2001 From: Marty Friedel <1491079+martyf@users.noreply.github.com> Date: Wed, 28 Aug 2024 17:24:25 +0930 Subject: [PATCH] Listen for ScheduledCacheInvalidated event --- src/Commands/ClearCacheCommand.php | 2 +- src/Listeners/ScheduledCacheInvalidated.php | 25 +++++++++++++++++++++ src/ServiceProvider.php | 4 ++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 src/Listeners/ScheduledCacheInvalidated.php diff --git a/src/Commands/ClearCacheCommand.php b/src/Commands/ClearCacheCommand.php index 2685383..d7712c9 100644 --- a/src/Commands/ClearCacheCommand.php +++ b/src/Commands/ClearCacheCommand.php @@ -56,7 +56,7 @@ public function handle() $this->info('Ah-choo... feeds for '.$cleared.' are clear.'); } else { - // Clear specific feeds caches + // Clear all feeds caches foreach (config('feedamic.feeds', []) as $feed => $config) { foreach ($config['routes'] as $type => $route) { Cache::forget(config('feedamic.cache').'.'.$feed.'.'.$type); diff --git a/src/Listeners/ScheduledCacheInvalidated.php b/src/Listeners/ScheduledCacheInvalidated.php new file mode 100644 index 0000000..f7dcf17 --- /dev/null +++ b/src/Listeners/ScheduledCacheInvalidated.php @@ -0,0 +1,25 @@ +filter(function (array $config, string $key) use ($event) { + return array_intersect(Arr::get($config, 'collections', []), $event->collections); + }) + ->keys(); + + Artisan::call(ClearCacheCommand::class, [ + 'feeds' => $feeds + ]); + } +} \ No newline at end of file diff --git a/src/ServiceProvider.php b/src/ServiceProvider.php index 6c2564c..83b951c 100644 --- a/src/ServiceProvider.php +++ b/src/ServiceProvider.php @@ -4,6 +4,7 @@ use MityDigital\Feedamic\Commands\ClearCacheCommand; use MityDigital\Feedamic\Listeners\ClearFeedamicCache; +use MityDigital\Feedamic\Listeners\ScheduledCacheInvalidated; use MityDigital\Feedamic\Tags\Feedamic; use Statamic\Events\EntrySaved; use Statamic\Providers\AddonServiceProvider; @@ -19,6 +20,9 @@ class ServiceProvider extends AddonServiceProvider protected $listen = [ EntrySaved::class => [ ClearFeedamicCache::class, + ], + \MityDigital\StatamicScheduledCacheInvalidator\Events\ScheduledCacheInvalidated::class => [ + ScheduledCacheInvalidated::class ] ];