From 35028b9bb9f28de4f47c4c54f564e46fcc2b1bcc Mon Sep 17 00:00:00 2001 From: Freek van de Ven Date: Thu, 23 May 2024 14:40:15 +0200 Subject: [PATCH] fix: initialize post with empty like count so posts liking works correctly --- CHANGELOG.md | 1 + .../lib/src/service/firebase_post_service.dart | 2 +- .../lib/src/screens/timeline_post_creation_screen.dart | 1 + .../lib/src/screens/timeline_post_screen.dart | 6 ++++-- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0308c4c..4c6f89a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ - Fix category key is correctly used for saving timeline posts and category title is shown everywhere - Fix when clicking on post delete in the post screen of the userstory it will now navigate back to the timeline and delete the post - Fix like icon being used for both like and unliked posts +- Fix post creator can only like the post once and after it is actually created ## 3.0.1 diff --git a/packages/flutter_timeline_firebase/lib/src/service/firebase_post_service.dart b/packages/flutter_timeline_firebase/lib/src/service/firebase_post_service.dart index 5956ae0..1c5ec58 100644 --- a/packages/flutter_timeline_firebase/lib/src/service/firebase_post_service.dart +++ b/packages/flutter_timeline_firebase/lib/src/service/firebase_post_service.dart @@ -254,7 +254,7 @@ class FirebaseTimelinePostService // update the post with the new like var updatedPost = post.copyWith( likes: post.likes + 1, - likedBy: post.likedBy?..add(userId), + likedBy: [...post.likedBy ?? [], userId], ); posts = posts .map( diff --git a/packages/flutter_timeline_view/lib/src/screens/timeline_post_creation_screen.dart b/packages/flutter_timeline_view/lib/src/screens/timeline_post_creation_screen.dart index cd36ae3..44e4d38 100644 --- a/packages/flutter_timeline_view/lib/src/screens/timeline_post_creation_screen.dart +++ b/packages/flutter_timeline_view/lib/src/screens/timeline_post_creation_screen.dart @@ -104,6 +104,7 @@ class _TimelinePostCreationScreenState category: widget.postCategory, content: contentController.text, likes: 0, + likedBy: const [], reaction: 0, createdAt: DateTime.now(), reactionEnabled: allowComments, diff --git a/packages/flutter_timeline_view/lib/src/screens/timeline_post_screen.dart b/packages/flutter_timeline_view/lib/src/screens/timeline_post_screen.dart index 1bc6922..b1719c4 100644 --- a/packages/flutter_timeline_view/lib/src/screens/timeline_post_screen.dart +++ b/packages/flutter_timeline_view/lib/src/screens/timeline_post_screen.dart @@ -191,8 +191,9 @@ class _TimelinePostScreenState extends State { ), ), const Spacer(), - if (widget.options.allowAllDeletion || - post.creator?.userId == widget.userId) + if (!(widget.isOverviewScreen ?? false) && + (widget.options.allowAllDeletion || + post.creator?.userId == widget.userId)) PopupMenuButton( onSelected: (value) => widget.onPostDelete.call(), itemBuilder: (BuildContext context) => @@ -305,6 +306,7 @@ class _TimelinePostScreenState extends State { ] else ...[ InkWell( onTap: () async { + if (widget.isOverviewScreen ?? false) return; updatePost( await widget.service.postService.likePost( widget.userId,