From 54532514c3cdf606a4cf89ef05e9ad0eaa6e9b47 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Thu, 5 Jun 2025 09:49:23 +0100 Subject: [PATCH 1/2] Add Tracker::flush() --- src/Tracker/Manager.php | 9 +++++++++ tests/Unit/TrackerTest.php | 22 ++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/Tracker/Manager.php b/src/Tracker/Manager.php index 1954f85..f5d27e0 100644 --- a/src/Tracker/Manager.php +++ b/src/Tracker/Manager.php @@ -103,6 +103,15 @@ private function invalidateUrls($urls) $cacher->invalidateUrls($urls); } + public function flush() + { + $urls = collect($this->all())->pluck('url'); + + $this->invalidateUrls($urls); + + $this->cacheStore()->forever($this->cacheKey, []); + } + public function remove(string $url) { $this->invalidateUrls([$url]); diff --git a/tests/Unit/TrackerTest.php b/tests/Unit/TrackerTest.php index b719f88..785295c 100644 --- a/tests/Unit/TrackerTest.php +++ b/tests/Unit/TrackerTest.php @@ -4,6 +4,7 @@ use Illuminate\Support\Facades\Event; use PHPUnit\Framework\Attributes\Test; +use Statamic\Events\UrlInvalidated; use Thoughtco\StatamicCacheTracker\Events\ContentTracked; use Thoughtco\StatamicCacheTracker\Facades\Tracker; use Thoughtco\StatamicCacheTracker\Tests\TestCase; @@ -69,4 +70,25 @@ public function it_doesnt_track_404_pages() $this->assertCount(0, Tracker::all()); } + + #[Test] + public function it_flushes() + { + Event::fake(); + + Tracker::addAdditionalTracker(function ($tracker, $next) { + $tracker->addContentTag('test::tag'); + }); + + $this->get('/'); + + $this->assertSame(['test::tag', 'pages:home'], collect(Tracker::all())->first()['tags']); + + $this->assertCount(1, Tracker::all()); + + Tracker::flush(); + + $this->assertCount(0, Tracker::all()); + Event::assertDispatched(UrlInvalidated::class); + } } From 1ec0c6cb02e2dde20368fbdbd03d88a1a93a512f Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Thu, 5 Jun 2025 09:50:11 +0100 Subject: [PATCH 2/2] docs --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 4dab9db..220fc54 100644 --- a/README.md +++ b/README.md @@ -78,4 +78,10 @@ $tags = ['one', 'two', 'three']; Tracker::invalidate($tags); ``` +### Flushing tracked data +To invalidate all pages containing your tracked data call: + +```php +Tracker::flush(); +```