fix: fix FirebaseTimelineService now proper implements

This commit is contained in:
Jacques 2024-01-30 09:32:23 +01:00
parent 7e7f74a02b
commit 525d8d3be6

View file

@ -13,8 +13,9 @@ import 'package:flutter_timeline_firebase/src/models/firebase_user_document.dart
import 'package:flutter_timeline_interface/flutter_timeline_interface.dart'; import 'package:flutter_timeline_interface/flutter_timeline_interface.dart';
import 'package:uuid/uuid.dart'; import 'package:uuid/uuid.dart';
class FirebaseTimelinePostService extends TimelinePostService class FirebaseTimelinePostService
with TimelineUserService { with TimelineUserService, ChangeNotifier
implements TimelinePostService {
FirebaseTimelinePostService({ FirebaseTimelinePostService({
required TimelineUserService userService, required TimelineUserService userService,
FirebaseApp? app, FirebaseApp? app,
@ -34,6 +35,9 @@ class FirebaseTimelinePostService extends TimelinePostService
final Map<String, TimelinePosterUserModel> _users = {}; final Map<String, TimelinePosterUserModel> _users = {};
@override
List<TimelinePost> posts = [];
@override @override
Future<TimelinePost> createPost(TimelinePost post) async { Future<TimelinePost> createPost(TimelinePost post) async {
var postId = const Uuid().v4(); var postId = const Uuid().v4();
@ -119,14 +123,16 @@ class FirebaseTimelinePostService extends TimelinePostService
.get() .get()
: await _db.collection(_options.timelineCollectionName).get(); : await _db.collection(_options.timelineCollectionName).get();
posts = <TimelinePost>[]; var fetchedPosts = <TimelinePost>[];
for (var doc in snapshot.docs) { for (var doc in snapshot.docs) {
var data = doc.data(); var data = doc.data();
var user = await _userService.getUser(data['creator_id']); var user = await _userService.getUser(data['creator_id']);
var post = TimelinePost.fromJson(doc.id, data).copyWith(creator: user); var post = TimelinePost.fromJson(doc.id, data).copyWith(creator: user);
posts.add(post); fetchedPosts.add(post);
} }
posts = fetchedPosts;
notifyListeners(); notifyListeners();
return posts; return posts;
} }