drupal-graphql / graphql

GraphQL integration for Drupal 9/10
288 stars 201 forks source link

[4.x] property_path DataProducer resolver function fetchDataByPropertyPath() does not pass language parameter #1380

Open kevinsiji opened 1 year ago

kevinsiji commented 1 year ago

While querying paragraph content in translated languages, found that property_path DataProducer resolve calls the function fetchDataByPropertyPath() at line 69 of graphql/src/Plugin/GraphQL/DataProducer/TypedData/PropertyPath.php, but does not pass the language parameter.

I tried to pass the language as 4th parameter, but it fails in the module typed_data/src/DataFetcher.php at line 57 where it checks if the typed_data passed is instanceof TranslatableInterface, which results in false, hence it returns the output in default language.

I work around this by below code in public function resolve in PropertyPath.php

$context_lang = $value->getValue()->language()->getId();
if ($output instanceof TranslatableInterface && $output->hasTranslation($context_lang)) {
  $output = $output->getTranslation($context_lang);
}