У меня есть два метода в моем Activity: один для добавления лайка к комментарию (щелчок по ImageView
) и уведомление в Firebase, а также пользователь, чей пост получает уведомление, а другой - для его удаления. (повторное нажатие на ImageView
). Проблема в том, что и уведомление, и комментарий отображаются и сохраняются в базе данных, но затем, когда я снова нажимаю, чтобы удалить «нравится», комментарий удаляется из базы данных, но уведомление не появляется.
Может кто-нибудь поможет мне с logi c этого метода. Что-то я делаю не так, потому что уведомление не удаляется, только комментарий.
private void likeComment(String commentId, String postId, String userId) {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Comments Liked").child(commentId).child(mFirebaseUser.getUid());
mNotificationId = reference.push().getKey();
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("notificationId", mNotificationId);
hashMap.put("commentid", commentId);
hashMap.put("userid", mFirebaseUser.getUid());
reference.setValue(hashMap);
HashMap<String, Object> hashMap1 = new HashMap<>();
hashMap1.put("userid", mFirebaseUser.getUid());
hashMap1.put("comment", "liked your comment");
hashMap1.put("postid", postId);
hashMap1.put("ispost", true);
hashMap1.put("notificationId", mNotificationId);
FirebaseDatabase.getInstance().getReference("Notifications").child(userId).child(mNotificationId).setValue(hashMap1);
}
private void removeLike(String userId, String commentId) {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Comments Liked").child(commentId).child(mFirebaseUser.getUid());
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
String notificationId = dataSnapshot.child("notificationId").getValue(String.class);
if (notificationId != null) {
FirebaseDatabase.getInstance().getReference("Notifications").child(userId).child(notificationId).removeValue();
reference.removeValue();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}