Skip to content

Commit 03b2996

Browse files
committed
ACPT-1665:Fix searchConfig merge in SearchCriteriaBuilder
1 parent 7e8f46a commit 03b2996

File tree

3 files changed

+58
-11
lines changed

3 files changed

+58
-11
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
namespace Magento\CatalogGraphQl\DataProvider\Product;
4+
5+
use Magento\Framework\ObjectManager\ResetAfterRequestInterface;
6+
7+
class RequestDataBuilder implements ResetAfterRequestInterface
8+
{
9+
private array $data;
10+
11+
public function __construct()
12+
{
13+
$this->_resetState();
14+
}
15+
16+
public function setData($data)
17+
{
18+
$this->data = $data;
19+
}
20+
21+
public function getData(string $key)
22+
{
23+
return $this->data[$key] ?? null;
24+
25+
}
26+
27+
/**
28+
* @inheritDoc
29+
*/
30+
public function _resetState(): void
31+
{
32+
$this->data = [];
33+
}
34+
}

app/code/Magento/CatalogGraphQl/DataProvider/Product/SearchCriteriaBuilder.php

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ class SearchCriteriaBuilder
6969
*/
7070
private SearchConfig $searchConfig;
7171

72+
private RequestDataBuilder $localData;
73+
7274
/**
7375
* @param Builder $builder
7476
* @param ScopeConfigInterface $scopeConfig
@@ -80,14 +82,15 @@ class SearchCriteriaBuilder
8082
* @param SearchConfig|null $searchConfig
8183
*/
8284
public function __construct(
83-
Builder $builder,
85+
Builder $builder,
8486
ScopeConfigInterface $scopeConfig,
85-
FilterBuilder $filterBuilder,
86-
FilterGroupBuilder $filterGroupBuilder,
87-
Visibility $visibility,
88-
SortOrderBuilder $sortOrderBuilder = null,
89-
Config $eavConfig = null,
90-
SearchConfig $searchConfig = null
87+
FilterBuilder $filterBuilder,
88+
FilterGroupBuilder $filterGroupBuilder,
89+
Visibility $visibility,
90+
SortOrderBuilder $sortOrderBuilder = null,
91+
Config $eavConfig = null,
92+
SearchConfig $searchConfig = null,
93+
RequestDataBuilder $localData = null,
9194
) {
9295
$this->scopeConfig = $scopeConfig;
9396
$this->filterBuilder = $filterBuilder;
@@ -97,6 +100,7 @@ public function __construct(
97100
$this->sortOrderBuilder = $sortOrderBuilder ?? ObjectManager::getInstance()->get(SortOrderBuilder::class);
98101
$this->eavConfig = $eavConfig ?? ObjectManager::getInstance()->get(Config::class);
99102
$this->searchConfig = $searchConfig ?? ObjectManager::getInstance()->get(SearchConfig::class);
103+
$this->localData = $localData ?? ObjectManager::getInstance()->get(RequestDataBuilder::class);
100104
}
101105

102106
/**
@@ -169,7 +173,7 @@ private function updateMatchTypeRequestConfig(string $requestName, array $partia
169173
}
170174
}
171175
}
172-
$this->searchConfig->merge([$requestName => $data]);
176+
$this->localData->setData([$requestName => $data]);
173177
}
174178

175179
/**

lib/internal/Magento/Framework/Search/Request/Builder.php

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
namespace Magento\Framework\Search\Request;
88

9+
use Magento\CatalogGraphQl\DataProvider\Product\RequestDataBuilder;
910
use Magento\Framework\Api\SortOrder;
1011
use Magento\Framework\ObjectManager\ResetAfterRequestInterface;
1112
use Magento\Framework\ObjectManagerInterface;
@@ -49,6 +50,8 @@ class Builder implements ResetAfterRequestInterface
4950
*/
5051
private $cleaner;
5152

53+
private RequestDataBuilder $localData;
54+
5255
/**
5356
* Request Builder constructor
5457
*
@@ -57,12 +60,14 @@ class Builder implements ResetAfterRequestInterface
5760
* @param Binder $binder
5861
* @param Cleaner $cleaner
5962
*/
60-
public function __construct(ObjectManagerInterface $objectManager, Config $config, Binder $binder, Cleaner $cleaner)
63+
public function __construct(ObjectManagerInterface $objectManager, Config $config, Binder $binder, Cleaner $cleaner
64+
, RequestDataBuilder $localData = null)
6165
{
6266
$this->objectManager = $objectManager;
6367
$this->config = $config;
6468
$this->binder = $binder;
6569
$this->cleaner = $cleaner;
70+
$this->localData = $localData?? $this->objectManager->get(RequestDataBuilder::class);
6671
}
6772

6873
/**
@@ -151,8 +156,12 @@ public function create()
151156
throw new \InvalidArgumentException("Request name not defined.");
152157
}
153158
$requestName = $this->data['requestName'];
154-
/** @var array $data */
155-
$data = $this->config->get($requestName);
159+
if ($this->localData->getData($requestName)) {
160+
$data = $this->localData->getData($requestName);
161+
} else {
162+
/** @var array $data */
163+
$data = $this->config->get($requestName);
164+
}
156165
if ($data === null) {
157166
throw new NonExistingRequestNameException(new Phrase("Request name '%1' doesn't exist.", [$requestName]));
158167
}

0 commit comments

Comments
 (0)