diff --git a/src/GraphQL/ClassTypeDefinitions.php b/src/GraphQL/ClassTypeDefinitions.php index 7052b4f4b..22e771ad6 100644 --- a/src/GraphQL/ClassTypeDefinitions.php +++ b/src/GraphQL/ClassTypeDefinitions.php @@ -59,7 +59,7 @@ public static function build(Service $graphQlService, $context = []) public static function get($class) { $className = is_string($class) ? $class : $class->getName(); - $result = self::$definitions[$className]; + $result = self::$definitions[$className] ?? null; if (!$result) { throw new ClientSafeException('type definition ' . $className . ' not found'); } diff --git a/src/GraphQL/DataObjectType/AbstractRelationsType.php b/src/GraphQL/DataObjectType/AbstractRelationsType.php index 298756ed3..f9affb8bb 100644 --- a/src/GraphQL/DataObjectType/AbstractRelationsType.php +++ b/src/GraphQL/DataObjectType/AbstractRelationsType.php @@ -131,9 +131,11 @@ public function resolveType($element, $context, ResolveInfo $info) { if ($element) { if ($element['__elementType'] == 'object') { - $type = ClassTypeDefinitions::get($element['__elementSubtype']); + if ($element['__elementSubtype'] === 'folder') { + return $this->getGraphQlService()->getDataObjectTypeDefinition('_object_folder'); + } - return $type; + return ClassTypeDefinitions::get($element['__elementSubtype']); } elseif ($element['__elementType'] == 'asset') { return $this->getGraphQlService()->buildAssetType('asset'); } elseif ($element['__elementType'] == 'document') { diff --git a/src/GraphQL/General/AnyTargetType.php b/src/GraphQL/General/AnyTargetType.php index aed56501d..3e669a871 100644 --- a/src/GraphQL/General/AnyTargetType.php +++ b/src/GraphQL/General/AnyTargetType.php @@ -87,9 +87,11 @@ public function resolveType($element, $context, ResolveInfo $info) { if ($element) { if ($element['__elementType'] == 'object') { - $type = ClassTypeDefinitions::get($element['__elementSubtype']); + if ($element['__elementSubtype'] === 'folder') { + return $this->getGraphQlService()->getDataObjectTypeDefinition('_object_folder'); + } - return $type; + return ClassTypeDefinitions::get($element['__elementSubtype']); } elseif ($element['__elementType'] == 'asset') { return $this->getGraphQlService()->buildAssetType('asset'); } elseif ($element['__elementType'] == 'document') { diff --git a/src/GraphQL/PropertyType/ObjectsType.php b/src/GraphQL/PropertyType/ObjectsType.php index cc8b9912b..115d1d36c 100644 --- a/src/GraphQL/PropertyType/ObjectsType.php +++ b/src/GraphQL/PropertyType/ObjectsType.php @@ -73,9 +73,11 @@ public function resolveType($element, $context, ResolveInfo $info) { if ($element) { if ($element['__elementType'] == 'object') { - $type = ClassTypeDefinitions::get($element['__elementSubtype']); + if ($element['__elementSubtype'] === 'folder') { + return $this->getGraphQlService()->getDataObjectTypeDefinition('_object_folder'); + } - return $type; + return ClassTypeDefinitions::get($element['__elementSubtype']); } elseif ($element['__elementType'] == 'asset') { return $this->getGraphQlService()->buildAssetType('asset'); } elseif ($element['__elementType'] == 'document') {