getAssetById method Null safety
- String id
Returns a MediaAsset instance for a CMS asset that is referenced
by ID. Returns null if the asset could not be retrieved from the CMS.
Do not call for assets that are stored locally as it will always return
null.
Implementation
Future<MediaAsset?> getAssetById(String id) async {
final gqlQueryString = '''
query GetAssetById {
upload(
id: "$id"
) {
${MediaGqlEntity.gqlQueryFragment}
}
}
''';
try {
final queryResult = await graphQLClient
.query<void>(QueryOptions(document: gql(gqlQueryString)));
if (queryResult.hasException) {
logger?.e(queryResult.exception.toString());
return null;
}
final data = queryResult.data!['users'] as List<dynamic>;
if (data.isNotEmpty) {
final assetData = data.first as Map<String, dynamic>;
final gqlAsset = MediaGqlEntity.fromJson(assetData);
if (gqlAsset == null) {
logger?.e('Unable to deserialize media asset with id $id');
return null;
}
return gqlAsset.toMediaAsset();
}
return null;
} catch (e, stackTrace) {
logger?.e(
'Could not retrieve media asset from repository', e, stackTrace);
return null;
}
}