Skip to content

Commit 40a6bda

Browse files
committed
B2B-2677: [MediaGallery] Implement data caching for GraphQL results on resolver level
- Fix replace/delete strategies retaining media gallery cache records
1 parent 20a66cd commit 40a6bda

File tree

3 files changed

+21
-6
lines changed

3 files changed

+21
-6
lines changed

app/code/Magento/CatalogGraphQl/Observer/AfterImportDataObserver.php

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,13 @@ public function __construct(
5454
*/
5555
public function execute(Observer $observer)
5656
{
57-
$mediaGalleryEntriesChanged = $observer->getEvent()->getMediaGallery();
58-
$mediaGalleryLabelsChanged = $observer->getEvent()->getMediaGalleryLabels();
57+
$mediaGalleryEntriesChanged = (array) $observer->getEvent()->getMediaGallery();
58+
$mediaGalleryLabelsChanged = (array) $observer->getEvent()->getMediaGalleryLabels();
59+
$productIdsToDelete = (array) $observer->getEvent()->getIdsToDelete();
5960

6061
if (empty($mediaGalleryEntriesChanged) &&
61-
empty($mediaGalleryLabelsChanged)
62+
empty($mediaGalleryLabelsChanged) &&
63+
empty($productIdsToDelete)
6264
) {
6365
return;
6466
}
@@ -78,10 +80,16 @@ public function execute(Observer $observer)
7880
$this->criteriaBuilder->addFilter('sku', $productSkusToInvalidate, 'in')->create()
7981
)->getItems();
8082

81-
$tags = array_map(function ($product) {
82-
return sprintf('%s_%s', ResolverCacheIdentity::CACHE_TAG, $product->getId());
83+
$productIds = array_map(function ($product) {
84+
return $product->getId();
8385
}, $products);
8486

87+
$productIdsToInvalidate = array_unique(array_merge($productIds, $productIdsToDelete));
88+
89+
$tags = array_map(function ($productId) {
90+
return sprintf('%s_%s', ResolverCacheIdentity::CACHE_TAG, $productId);
91+
}, $productIdsToInvalidate);
92+
8593
$this->graphQlResolverCache->clean(
8694
\Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG,
8795
$tags

app/code/Magento/CatalogGraphQl/etc/events.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,7 @@
99
<event name="catalog_product_import_bunch_save_after">
1010
<observer name="invalidate_media_gallery_resolver_cache" instance="Magento\CatalogGraphQl\Observer\AfterImportDataObserver"/>
1111
</event>
12+
<event name="catalog_product_import_bunch_delete_after">
13+
<observer name="invalidate_media_gallery_resolver_cache" instance="Magento\CatalogGraphQl\Observer\AfterImportDataObserver"/>
14+
</event>
1215
</config>

app/code/Magento/CatalogImportExport/Model/Import/Product.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1104,7 +1104,11 @@ protected function _deleteProducts()
11041104
}
11051105
$this->_eventManager->dispatch(
11061106
'catalog_product_import_bunch_delete_after',
1107-
['adapter' => $this, 'bunch' => $bunch]
1107+
[
1108+
'adapter' => $this,
1109+
'bunch' => $bunch,
1110+
'ids_to_delete' => $idsToDelete,
1111+
]
11081112
);
11091113
$this->reindexProducts($idsToDelete);
11101114
}

0 commit comments

Comments
 (0)