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

45 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 💬 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
```java
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