Я занимаюсь разработкой приложения для чата, и мне нужно реализовать эту функцию, чтобы блокировать и разблокировать пользователя. У меня есть функция, но проблема в том, что если я заблокирую пользователя 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.