> For the complete documentation index, see [llms.txt](https://saludplus.gitbook.io/saludplus/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://saludplus.gitbook.io/saludplus/modulos/chat-soporte/estado-de-escritura.md).

# Estado de Escritura

### Descripción

Permite actualizar y consultar el estado de escritura ("typing") de un usuario en una conversación de chat.

***

### Método del Servicio

```csharp
Task<bool> ActualizarTypingStatus(string chatId, TypingStatusUpdateDTO dto, string userName, string userEmail = "")
```

### Campos de TypingStatusUpdateDTO

| Campo    | Tipo     | Descripción                                       |
| -------- | -------- | ------------------------------------------------- |
| isTyping | Booleano | true = está escribiendo, false = dejó de escribir |

### Flujo

1. Busca si existe un registro `TypingStatus` para `chatId` y `senderName`
2. Si `isTyping == true`:
   * Si no existe, crea nuevo registro
   * Si existe, actualiza `IsTyping = true` y `UpdatedAt`
3. Si `isTyping == false`:
   * Elimina el registro existente

### Estructura en MongoDB

```json
{
  "_id": "typing_id",
  "chatId": "chat_id",
  "senderName": "Nombre Usuario",
  "senderEmail": "email@ejemplo.com",
  "senderRole": "patient",
  "isTyping": true,
  "updatedAt": "2026-04-17T15:12:00Z"
}
```

### Uso en Tiempo Real

Este estado se utiliza para mostrar indicadores visuales en la interfaz:

* "Usuario está escribiendo..."
* Se actualiza frecuentemente mediante WebSocket o polling

### Roles Disponibles

| Rol       | Descripción       |
| --------- | ----------------- |
| `patient` | Usuario/paciente  |
| `agent`   | Agente de soporte |
