refactor: enhance chat components with type safety and response functionality

- Updated type definitions in ChatWindow and MessageList components for better type safety.
- Improved MessageInput to handle message responses, including a preview feature for replying to messages.
- Enhanced the chat message handling logic to support message references and improve user interaction.
- Refactored notification utility functions to support push notifications and rate limiting for email sending.
- Updated backend schema to accommodate new features related to message responses and notifications.
This commit is contained in:
2025-11-04 20:36:01 -03:00
parent 15374276d5
commit 12db52a8a7
23 changed files with 3195 additions and 503 deletions

View File

@@ -28,7 +28,7 @@
return null;
}
const encontrada = conversas.data.find((c: any) => c._id === conversaId);
const encontrada = conversas.data.find((c: { _id: string }) => c._id === conversaId);
console.log("✅ [ChatWindow] Conversa encontrada:", encontrada);
return encontrada;
});
@@ -54,10 +54,10 @@
return "👤";
}
function getStatusConversa(): any {
function getStatusConversa(): "online" | "offline" | "ausente" | "externo" | "em_reuniao" | null {
const c = conversa();
if (c && c.tipo === "individual" && c.outroUsuario) {
return c.outroUsuario.statusPresenca || "offline";
return (c.outroUsuario.statusPresenca as "online" | "offline" | "ausente" | "externo" | "em_reuniao") || "offline";
}
return null;
}
@@ -169,20 +169,20 @@
</div>
<!-- Mensagens -->
<div class="flex-1 overflow-hidden">
<MessageList conversaId={conversaId as any} />
<div class="flex-1 overflow-hidden min-h-0">
<MessageList conversaId={conversaId as Id<"conversas">} />
</div>
<!-- Input -->
<div class="border-t border-base-300">
<MessageInput conversaId={conversaId as any} />
<div class="border-t border-base-300 flex-shrink-0">
<MessageInput conversaId={conversaId as Id<"conversas">} />
</div>
</div>
<!-- Modal de Agendamento -->
{#if showScheduleModal}
<ScheduleMessageModal
conversaId={conversaId as any}
conversaId={conversaId as Id<"conversas">}
onClose={() => (showScheduleModal = false)}
/>
{/if}