Skip to content

Commit ed8472c

Browse files
authored
Check if the given image style is supported. (#966)
1 parent 3995b97 commit ed8472c

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

modules/graphql_core/src/Plugin/GraphQL/Fields/Entity/Fields/Image/ImageDerivative.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Drupal\Core\DependencyInjection\DependencySerializationTrait;
66
use Drupal\Core\Image\ImageFactory;
77
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
8+
use Drupal\file\Entity\File;
89
use Drupal\graphql\GraphQL\Cache\CacheableValue;
910
use Drupal\graphql\GraphQL\Execution\ResolveContext;
1011
use Drupal\graphql\Plugin\GraphQL\Fields\FieldPluginBase;
@@ -69,18 +70,26 @@ public function __construct(array $configuration, $pluginId, $pluginDefinition,
6970
*/
7071
protected function resolveValues($value, array $args, ResolveContext $context, ResolveInfo $info) {
7172
if ($value instanceof ImageItem && $value->entity && $value->entity->access('view') && $style = ImageStyle::load($args['style'])) {
73+
assert($style instanceof ImageStyle);
7274
$file = $value->entity;
75+
assert($file instanceof File);
7376

7477
// Determine the dimensions of the styled image.
7578
$dimensions = [
7679
'width' => $value->width,
7780
'height' => $value->height,
7881
];
7982

80-
$style->transformDimensions($dimensions, $file->getFileUri());
83+
if ($style->supportsUri($file->getFileUri())) {
84+
$style->transformDimensions($dimensions, $file->getFileUri());
85+
$url = $style->buildUrl($file->getFileUri());
86+
}
87+
else {
88+
$url = $file->url();
89+
}
8190

8291
yield new CacheableValue([
83-
'url' => $style->buildUrl($file->getFileUri()),
92+
'url' => $url,
8493
'width' => $dimensions['width'],
8594
'height' => $dimensions['height'],
8695
], [$style]);

0 commit comments

Comments
 (0)