Я занимаюсь разработкой приложения для чата со списком людей, которые общались с вами, как и для любого чата.Мне нужно обновить список, кто последним разговаривал с вами или кто последний разговаривал с вами.Поэтому, когда я отправляю сообщение кому-то, я удаляю свою строку из его списка, создаю ее снова и делаю то же самое в своем списке.Это мой код:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
Query applesQuery = ref.child(theUID).child("messages").orderByChild("lastUIDTalkedTo").equalTo(hisU);
applesQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists())
{
for (DataSnapshot appleSnapshot: dataSnapshot.getChildren()) {
appleSnapshot.getRef().removeValue().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
FirebaseDatabase hisDbMessageList = FirebaseDatabase.getInstance();
final DatabaseReference hisDocMessageList = hisDbMessageList.getReference(hisUID).child("messages").push();
hisDocMessageList.setValue(new MessagesListModel(theUID , id , nickName , handle , country , returnThePostDate() ,
returnPostTime() , theUID , false));
}
});
}
}else
{
FirebaseDatabase hisDbMessageList = FirebaseDatabase.getInstance();
final DatabaseReference hisDocMessageList = hisDbMessageList.getReference(hisUID).child("messages").push();
hisDocMessageList.setValue(new MessagesListModel(theUID , id , nickName , handle , country , returnThePostDate() ,
returnPostTime() , theUID , false));
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Это не всегда хорошо работает.Любая идея, чтобы заставить это работать действительно хорошо?