Узел уведомлений не удаляет уведомление, а его данные в ImageView щелкают, когда это необходимо. - PullRequest
0 голосов
/ 05 мая 2020

У меня есть два метода в моем 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) {

            }
        });
    }
...