# 💬 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 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 80–103 ```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 106–118 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