getPostDocs method
Implementation
Stream<List<Map<String, dynamic>>> getPostDocs(
String appId, String path, Map<String, dynamic> query,
{Map<String, dynamic>? filters}) async* {
Query q = firestore.collection(appId).doc('data').collection('posts');
query.keys.forEach((key) {
q = q.where('features.' + key, isEqualTo: query[key]);
});
if (filters != null) {
filters.keys.forEach((key) {
q = q.where('features.' + key, isEqualTo: filters[key]);
});
}
q = q.orderBy('features.dateAdded', descending: true);
List<Map<String, dynamic>> posts = [];
q.snapshots().listen((QuerySnapshot querySnapshot) async {
posts.clear();
await Future.forEach(querySnapshot.docs, (DocumentSnapshot post) {
posts.add(post.data() ?? {});
});
_postsStream.sink.add(posts);
});
yield* _postsStream.stream;
}