1.4 KiB
1.4 KiB
💬 ChatActivity.java — Chat em Tempo Real
Ficheiro:
app/src/main/java/com/example/medcuida/pro/ChatActivity.java
Layout:activity_chat.xml| Linhas: 120
Descrição Geral
Sistema de chat em tempo real entre médico e paciente. As mensagens ficam numa sub-coleção do Firestore: consultas/{consultaId}/mensagens/.
Inicialização (onCreate) — Linhas 39–78
- Verifica autenticação — se não há utilizador, fecha a Activity
- Obtém dados via Intent:
currentUserId→ UID do médico autenticadoconsultaId→ ID da consulta (recebido da Activity anterior)
- Configura RecyclerView com
setStackFromEnd(true)(mensagens começam de baixo, como WhatsApp) - Botão enviar → chama
enviarMensagem()
carregarMensagens() — Linhas 80–103
db.collection("consultas").document(consultaId).collection("mensagens")
.orderBy("timestamp", Query.Direction.ASCENDING)
.addSnapshotListener(...)
- Escuta em tempo real a sub-coleção
mensagens - Ordena por
timestamp(mais antigas primeiro) - Faz scroll automático para a última mensagem
enviarMensagem() — Linhas 106–118
- Lê o texto e valida (não envia se vazio)
- Cria
Mensagem(texto, currentUserId, timestamp) - Adiciona ao Firestore via
.add() - Sucesso → limpa campo | Erro → mostra toast