From 5afaf6fac91191fd2934f1519da104276148ee2d Mon Sep 17 00:00:00 2001 From: Niklan Date: Tue, 24 Mar 2026 19:29:33 +0500 Subject: [PATCH] feat(platform): add cacheable metadata support to LlmsResponseAlterEvent --- .../Llms/EventSubscriber/PagerLlmsSubscriber.php | 2 ++ app/modules/platform/src/Llms/LlmsRenderer.php | 2 ++ .../platform/src/Llms/LlmsResponseAlterEvent.php | 16 +++++++++++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/modules/platform/src/Llms/EventSubscriber/PagerLlmsSubscriber.php b/app/modules/platform/src/Llms/EventSubscriber/PagerLlmsSubscriber.php index 69a65758..a34dd701 100644 --- a/app/modules/platform/src/Llms/EventSubscriber/PagerLlmsSubscriber.php +++ b/app/modules/platform/src/Llms/EventSubscriber/PagerLlmsSubscriber.php @@ -24,6 +24,8 @@ public function onAlter(LlmsResponseAlterEvent $event): void { return; } + $event->getCacheableMetadata()->addCacheContexts(['url.query_args.pagers:0']); + $current = $pager->getCurrentPage(); $total = $pager->getTotalPages(); $last = $total - 1; diff --git a/app/modules/platform/src/Llms/LlmsRenderer.php b/app/modules/platform/src/Llms/LlmsRenderer.php index f65d0f37..35a15abd 100644 --- a/app/modules/platform/src/Llms/LlmsRenderer.php +++ b/app/modules/platform/src/Llms/LlmsRenderer.php @@ -61,6 +61,8 @@ public function renderResponse(array $main_content, Request $request, RouteMatch $alter_event = new LlmsResponseAlterEvent($markdown, $request, $route_match); $this->eventDispatcher->dispatch($alter_event); + $cacheable_metadata = $cacheable_metadata->merge($alter_event->getCacheableMetadata()); + $response = new CacheableResponse($alter_event->getMarkdown(), 200, [ 'Content-Type' => 'text/markdown; charset=UTF-8', 'X-Robots-Tag' => 'noindex', diff --git a/app/modules/platform/src/Llms/LlmsResponseAlterEvent.php b/app/modules/platform/src/Llms/LlmsResponseAlterEvent.php index 329905bf..b451875d 100644 --- a/app/modules/platform/src/Llms/LlmsResponseAlterEvent.php +++ b/app/modules/platform/src/Llms/LlmsResponseAlterEvent.php @@ -4,17 +4,31 @@ namespace Drupal\app_platform\Llms; +use Drupal\Core\Cache\CacheableDependencyInterface; +use Drupal\Core\Cache\CacheableMetadata; use Drupal\Core\Routing\RouteMatchInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Contracts\EventDispatcher\Event; final class LlmsResponseAlterEvent extends Event { + private CacheableMetadata $cacheableMetadata; + public function __construct( private string $markdown, public readonly Request $request, public readonly RouteMatchInterface $routeMatch, - ) {} + ) { + $this->cacheableMetadata = new CacheableMetadata(); + } + + public function addCacheableDependency(CacheableDependencyInterface $dependency): void { + $this->cacheableMetadata = $this->cacheableMetadata->merge(CacheableMetadata::createFromObject($dependency)); + } + + public function getCacheableMetadata(): CacheableMetadata { + return $this->cacheableMetadata; + } public function getMarkdown(): string { return $this->markdown;