findGalleries method

  1. @override
Future<List<Gallery>> findGalleries({
  1. int? page,
  2. int? perPage,
  3. String? filter,
  4. String? sort,
  5. bool? descending,
})
override

Implementation

@override
Future<List<Gallery>> findGalleries({
  int? page,
  int? perPage,
  String? filter,
  String? sort,
  bool? descending,
}) async {
  const query = r'''
    query FindGalleries($filter: FindFilterType, $gallery_filter: GalleryFilterType) {
      findGalleries(filter: $filter, gallery_filter: $gallery_filter) {
        galleries {
          id
          title
          date
          rating100
          image_count
          details
        }
      }
    }
  ''';

  final result = await client.query(
    QueryOptions(
      document: gql(query),
      variables: {
        'filter': {
          'page': page,
          'per_page': perPage,
          'sort': sort,
          'direction': descending == true ? 'DESC' : 'ASC',
        },
        'gallery_filter': filter != null
            ? {
                'title': {
                  'value': filter,
                  'modifier': 'EQUALS',
                },
              }
            : null,
      },
    ),
  );

  if (result.hasException) throw result.exception!;

  final galleriesJson =
      result.data?['findGalleries']?['galleries'] as List<dynamic>? ?? [];
  return galleriesJson
      .map((g) => Gallery.fromJson(g as Map<String, dynamic>))
      .toList();
}