Я пытаюсь создать небольшое приложение для чата с использованием облака Firebase. Я создал следующую структуру в базе данных Firebase:
Collection "users" -> bob@gmail.com document -> map of "chat rooms" field (type Map<String, DocumentReference>)
Collection chatRooms -> room id document -> Collection messages -> message id document -> fields
message id document
содержит следующие поля:
from: the user that sent the message
message: the text of the mesasage
sentAt: Date
Я хочу создать RecyclerView всех чатов текущий пользователь. Итак, что я сделал:
FireDB.collection("users").document(connectedEmail).get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
Log.d(this.getClass().getName(), "addOnSuccessListener:success");
if (!(documentSnapshot.exists())) {
// TODO
return;
}
Map<String, DocumentReference> chatRooms = (Map<String, DocumentReference>) documentSnapshot.get("chatRooms");
if (chatRooms.isEmpty()) {
// TODO
return;
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(this.getClass().getName(), "addOnSuccessListener:failed");
}
});
Каким будет самый простой путь к карте чата по дате последнего сообщения? Я думал сохранить на уровне room id document
последний раз, когда этот документ был затронут, но я хочу знать, можно ли использовать Firebase без добавления специальной поддержки.