Files
cuidamais_med/docs/03_ChatActivity.md
2026-04-22 12:41:12 +01:00

1.4 KiB
Raw Blame History

💬 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 3978

  1. Verifica autenticação — se não há utilizador, fecha a Activity
  2. Obtém dados via Intent:
    • currentUserId → UID do médico autenticado
    • consultaId → ID da consulta (recebido da Activity anterior)
  3. Configura RecyclerView com setStackFromEnd(true) (mensagens começam de baixo, como WhatsApp)
  4. Botão enviar → chama enviarMensagem()

carregarMensagens() — Linhas 80103

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 106118

  1. Lê o texto e valida (não envia se vazio)
  2. Cria Mensagem(texto, currentUserId, timestamp)
  3. Adiciona ao Firestore via .add()
  4. Sucesso → limpa campo | Erro → mostra toast