onFetch method

  1. @override
Future<AlbumOre> onFetch(
  1. String path, [
  2. Query? query
])
override

Implementation

@override
Future<AlbumOre> onFetch(path, [query]) async {
  const r = FirestoreCodec.decode; // decoder
  final s = [#pageSize, #pageToken, #orderBy];
  x(data) => data..[Album.srcKey] = data['name'];

  final uri = accessUri.resolve(resolvePath(path)).replace(
        queryParameters: Query.splice(query, s)?.json,
        scheme: 'https', // designate framework.*
      );

  final response = await client.get(uri);
  final body = json.decode(response.body, reviver: r);

  if (response.statusCode != 200) {
    throw FirestoreException(response); //*!
  }

  // return single model
  if (!body.containsKey('documents')) {
    return AlbumOre(x(body));
  }

  // return multiple models % no token
  return AlbumOre(
    body['documents'].map(x).toList(),
    body['nextPageToken'],
  );
}