removeReaction method
Future<void>
removeReaction(
{ - required String feedId,
- required String reactionId,
- required String ownerId,
- required String parentId,
- required String parentOwnerId,
- bool updateParentReactionsCount = true,
- bool updateUserReactionsCount = true,
- dynamic onSuccess(
- String
)?,
- dynamic onError(
- dynamic
)?,
})
Implementation
Future<void> removeReaction({
required final String feedId,
required final String reactionId,
required final String ownerId,
required final String parentId,
required final String parentOwnerId,
final bool updateParentReactionsCount = true,
final bool updateUserReactionsCount = true,
final Function(String)? onSuccess,
final Function(dynamic)? onError,
}) async {
try {
final _reactionsRef =
PeamanReferenceHelper.reactionsCol(feedId: feedId).doc(reactionId);
final _reactedFeedRef =
PeamanReferenceHelper.reactedFeedsCol(uid: ownerId).doc(feedId);
final _feedReactorRef =
PeamanReferenceHelper.feedReactorsCol(feedId: feedId).doc(ownerId);
final _futures = <Future>[];
final _future = _reactionsRef.update({
'unreacted': true,
});
_futures.add(_future);
if (feedId == parentId) {
if (updateParentReactionsCount) {
final _feedPropertiesFuture = updateFeedPropertiesCount(
feedId: feedId,
reactionsCount: -1,
);
_futures.add(_feedPropertiesFuture);
}
if (updateUserReactionsCount) {
final _userPropertyFuture = PUserProvider.updateUserPropertiesCount(
uid: parentOwnerId,
reactionsReceivedFromFeeds: -1,
);
_futures.add(_userPropertyFuture);
}
final _reactedFeedFuture = _reactedFeedRef.delete();
final _feedReactorFuture = _feedReactorRef.delete();
_futures.add(_reactedFeedFuture);
_futures.add(_feedReactorFuture);
print('Success: Removing reaction from feed $feedId');
} else {
if (updateParentReactionsCount) {
final _commentPropertyFuture = updateCommentPropertiesCount(
feedId: feedId,
commentId: parentId,
reactionsCount: -1,
);
_futures.add(_commentPropertyFuture);
}
if (updateUserReactionsCount) {
final _userPropertyFuture = PUserProvider.updateUserPropertiesCount(
uid: parentOwnerId,
reactionsReceivedFromFeeds: -1,
);
_futures.add(_userPropertyFuture);
}
print('Success: Removing reaction from comment $parentId');
}
await Future.wait(_futures);
onSuccess?.call(_reactionsRef.id);
} catch (e) {
print(e);
print('Error!!!: Removing reaction');
onError?.call(e);
}
}