блокировать и разблокировать пользователя в приложении чата android - PullRequest
0 голосов
/ 11 апреля 2020

Я занимаюсь разработкой приложения для чата, и мне нужно реализовать эту функцию, чтобы блокировать и разблокировать пользователя. У меня есть функция, но проблема в том, что если я заблокирую пользователя xyz, он не сможет отправить мне сообщение, но я отправлю сообщение xyz.

Так что мне нужно исправить, что я также не могу отправить сообщение xyz и показывает тост: - сначала разблокировать пользователя.

Как это можно сделать?

private void isBlockedOrNotImg() {
    DatabaseReference reff = FirebaseDatabase.getInstance().getReference("Users");
    reff.child(userid).child("BlockedUsers").orderByChild("uid").equalTo(fuser.getUid())
            .addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                        if (snapshot.exists()) {
                            Toast.makeText(MessageActivity.this, "This user blocked you", Toast.LENGTH_SHORT).show();
                            return;
                        }
                    }
                    chooseImage();
                    mchat.clear();
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
}

private void unBlockUser() {

    DatabaseReference reff = FirebaseDatabase.getInstance().getReference("Users");
    reff.child(fuser.getUid()).child("BlockedUsers").orderByChild("uid").equalTo(userid)
            .addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    for(DataSnapshot snapshot : dataSnapshot.getChildren()) {
                        if(snapshot.exists()) {
                            snapshot.getRef().removeValue()
                                    .addOnSuccessListener(new OnSuccessListener<Void>() {
                                        @Override
                                        public void onSuccess(Void aVoid) {
                                            isBlocked = false;
                                            Toast.makeText(MessageActivity.this, "You unblocked "+user_name, Toast.LENGTH_SHORT).show();
                                        }
                                    })
                                    .addOnFailureListener(new OnFailureListener() {
                                        @Override
                                        public void onFailure(@NonNull Exception e) {
                                            Toast.makeText(MessageActivity.this, "fail"+e.getMessage(), Toast.LENGTH_SHORT).show();
                                        }
                                    });
                        }
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });

}

private void blockUser() {
    HashMap<String, String> hashMap = new HashMap<>();
    hashMap.put("uid", userid);

    DatabaseReference reff = FirebaseDatabase.getInstance().getReference("Users");
    reff.child(fuser.getUid()).child("BlockedUsers").child(userid).setValue(hashMap)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    Toast.makeText(MessageActivity.this, "You blocked "+user_name, Toast.LENGTH_SHORT).show();
                    isBlocked = true;
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(MessageActivity.this, "fail"+e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
}

private void checkIsBlocked() {
    DatabaseReference reff = FirebaseDatabase.getInstance().getReference("Users");
    reff.child(fuser.getUid()).child("BlockedUsers").orderByChild("uid").equalTo(userid)
            .addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    for(DataSnapshot snapshot : dataSnapshot.getChildren()) {
                        if(snapshot.exists()) {
                            isBlocked = true;
                        }
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });

}

в oncreate при вызове кнопки send isBlockedOrNotImg и вызывается checkIsBlocked в методе oncreate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...