Fix chat widget UI and allow attachment-only messages
- Allow sending messages with only attachments (no text required) - Change "Chat Ativo" header to just "Chat" - Replace Headphones icon with MessageCircle for own messages - Replace PhoneOff icon with XCircle for end chat button 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
60e98dd47c
commit
f45ee91804
2 changed files with 18 additions and 15 deletions
|
|
@ -3178,14 +3178,17 @@ export const postChatMessage = mutation({
|
|||
}
|
||||
|
||||
const trimmedBody = body.replace(/\r\n/g, "\n").trim()
|
||||
if (trimmedBody.length === 0) {
|
||||
throw new ConvexError("Digite uma mensagem para enviar no chat")
|
||||
const files = attachments ?? []
|
||||
|
||||
// Validar que há pelo menos texto ou anexo
|
||||
if (trimmedBody.length === 0 && files.length === 0) {
|
||||
throw new ConvexError("Digite uma mensagem ou anexe um arquivo")
|
||||
}
|
||||
if (trimmedBody.length > 4000) {
|
||||
throw new ConvexError("Mensagem muito longa (máx. 4000 caracteres)")
|
||||
}
|
||||
|
||||
const files = attachments ?? []
|
||||
// Validar anexos
|
||||
if (files.length > 5) {
|
||||
throw new ConvexError("Envie até 5 arquivos por mensagem")
|
||||
}
|
||||
|
|
@ -3196,13 +3199,14 @@ export const postChatMessage = mutation({
|
|||
}
|
||||
}
|
||||
|
||||
const normalizedBody = await normalizeTicketMentions(ctx, trimmedBody, { user: participant.user, role: participant.role ?? "" }, ticketDoc.tenantId)
|
||||
const plainLength = plainTextLength(normalizedBody)
|
||||
if (plainLength === 0) {
|
||||
throw new ConvexError("A mensagem está vazia após a formatação")
|
||||
}
|
||||
if (plainLength > 4000) {
|
||||
throw new ConvexError("Mensagem muito longa (máx. 4000 caracteres)")
|
||||
// Normalizar corpo apenas se houver texto
|
||||
let normalizedBody = ""
|
||||
if (trimmedBody.length > 0) {
|
||||
normalizedBody = await normalizeTicketMentions(ctx, trimmedBody, { user: participant.user, role: participant.role ?? "" }, ticketDoc.tenantId)
|
||||
const plainLength = plainTextLength(normalizedBody)
|
||||
if (plainLength > 4000) {
|
||||
throw new ConvexError("Mensagem muito longa (máx. 4000 caracteres)")
|
||||
}
|
||||
}
|
||||
|
||||
const authorSnapshot: CommentAuthorSnapshot = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue