diff --git a/vendor/magento/module-catalog-graph-ql/Plugin/ProductAttributeSortInput.php b/vendor/magento/module-catalog-graph-ql/Plugin/ProductAttributeSortInput.php new file mode 100644 index 000000000000..ac1a2279b771 --- /dev/null +++ b/vendor/magento/module-catalog-graph-ql/Plugin/ProductAttributeSortInput.php @@ -0,0 +1,95 @@ +getSortFieldsOrder($info, $args['sort']); + } + return [$field, $context, $info, $value, $args]; + } + + /** + * Get sort fields in the original order + * + * @param ResolveInfo $info + * @param array $sortFields + * @return array + * @throws \Exception + */ + private function getSortFieldsOrder(ResolveInfo $info, array $sortFields) + { + $sortFieldsOriginal = []; + Visitor::visit( + $info->operation, + [ + 'enter' => [ + NodeKind::ARGUMENT => function (Node $node) use (&$sortFieldsOriginal, $sortFields) { + if ($node->name->value === 'sort') { + Visitor::visit( + $node->value, + [ + 'enter' => [ + NodeKind::OBJECT_FIELD => + function (Node $node) use (&$sortFieldsOriginal, $sortFields) { + if (isset($sortFields[$node->name->value])) { + $sortFieldsOriginal[$node->name->value] = + $sortFields[$node->name->value]; + } + } + ] + ] + ); + return Visitor::stop(); + } + } + ] + ] + ); + return $sortFieldsOriginal; + } +} diff --git a/vendor/magento/module-catalog-graph-ql/etc/graphql/di.xml b/vendor/magento/module-catalog-graph-ql/etc/graphql/di.xml index d66ee50ba03a..a55ee59f4a00 100644 --- a/vendor/magento/module-catalog-graph-ql/etc/graphql/di.xml +++ b/vendor/magento/module-catalog-graph-ql/etc/graphql/di.xml @@ -208,4 +208,11 @@ + + + + + + +