chat: remover placeholder [Anexo]
This commit is contained in:
parent
119ada60a6
commit
ce5ea5dad5
3 changed files with 42 additions and 21 deletions
|
|
@ -612,7 +612,7 @@ export function ChatWidget({ ticketId, ticketRef }: ChatWidgetProps) {
|
|||
setIsSending(true)
|
||||
|
||||
try {
|
||||
const bodyToSend = messageText || (attachmentsToSend.length > 0 ? "[Anexo]" : "")
|
||||
const bodyToSend = messageText
|
||||
const cfg = await ensureConfig()
|
||||
await invoke("send_chat_message", {
|
||||
baseUrl: cfg.apiBaseUrl,
|
||||
|
|
@ -814,6 +814,9 @@ export function ChatWidget({ ticketId, ticketRef }: ChatWidgetProps) {
|
|||
// No desktop: isFromMachine=true significa mensagem do cliente (maquina)
|
||||
// Layout igual à web: cliente à esquerda, agente à direita
|
||||
const isAgent = !msg.isFromMachine
|
||||
const bodyText = msg.body.trim()
|
||||
const shouldShowBody =
|
||||
bodyText.length > 0 && !(bodyText === "[Anexo]" && (msg.attachments?.length ?? 0) > 0)
|
||||
return (
|
||||
<div key={msg.id} className="space-y-2">
|
||||
{firstUnreadAgentMessageId === msg.id && unreadCount > 0 && !isAtBottom && (
|
||||
|
|
@ -856,7 +859,7 @@ export function ChatWidget({ ticketId, ticketRef }: ChatWidgetProps) {
|
|||
{msg.authorName}
|
||||
</p>
|
||||
)}
|
||||
<p className="whitespace-pre-wrap text-sm">{msg.body}</p>
|
||||
{shouldShowBody && <p className="whitespace-pre-wrap text-sm">{msg.body}</p>}
|
||||
{/* Anexos */}
|
||||
{msg.attachments && msg.attachments.length > 0 && (
|
||||
<div className="mt-2 space-y-2">
|
||||
|
|
|
|||
|
|
@ -14,10 +14,11 @@ const getMessagesSchema = z.object({
|
|||
limit: z.number().optional(),
|
||||
})
|
||||
|
||||
const postMessageSchema = z.object({
|
||||
const postMessageSchema = z
|
||||
.object({
|
||||
machineToken: z.string().min(1),
|
||||
ticketId: z.string().min(1),
|
||||
body: z.string().min(1).max(4000),
|
||||
body: z.string().max(4000).optional(),
|
||||
attachments: z
|
||||
.array(
|
||||
z.object({
|
||||
|
|
@ -29,6 +30,17 @@ const postMessageSchema = z.object({
|
|||
)
|
||||
.optional(),
|
||||
})
|
||||
.superRefine((value, ctx) => {
|
||||
const body = (value.body ?? "").trim()
|
||||
const hasAttachments = (value.attachments?.length ?? 0) > 0
|
||||
if (body.length === 0 && !hasAttachments) {
|
||||
ctx.addIssue({
|
||||
code: z.ZodIssueCode.custom,
|
||||
message: "Mensagem vazia",
|
||||
path: ["body"],
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
const CORS_METHODS = "POST, OPTIONS"
|
||||
|
||||
|
|
@ -123,14 +135,18 @@ export async function POST(request: Request) {
|
|||
}
|
||||
|
||||
try {
|
||||
const body = (payload.body ?? "").trim()
|
||||
const attachments =
|
||||
payload.attachments && payload.attachments.length > 0 ? payload.attachments : undefined
|
||||
|
||||
// Retry com backoff exponencial para falhas transientes
|
||||
const result = await withRetry(
|
||||
() =>
|
||||
client.mutation(api.liveChat.postMachineMessage, {
|
||||
machineToken: payload.machineToken,
|
||||
ticketId: payload.ticketId as Id<"tickets">,
|
||||
body: payload.body,
|
||||
attachments: payload.attachments as
|
||||
body,
|
||||
attachments: attachments as
|
||||
| Array<{
|
||||
storageId: Id<"_storage">
|
||||
name: string
|
||||
|
|
|
|||
|
|
@ -759,6 +759,10 @@ export function ChatWidget() {
|
|||
<div className="space-y-3">
|
||||
{messages.map((msg) => {
|
||||
const isOwn = String(msg.authorId) === String(viewerId)
|
||||
const bodyText = msg.body?.trim() ?? ""
|
||||
const shouldShowBody =
|
||||
bodyText.length > 0 &&
|
||||
!(bodyText === "[Anexo]" && (msg.attachments?.length ?? 0) > 0)
|
||||
return (
|
||||
<div
|
||||
key={msg.id}
|
||||
|
|
@ -785,9 +789,7 @@ export function ChatWidget() {
|
|||
{msg.authorName ?? "Cliente"}
|
||||
</p>
|
||||
)}
|
||||
{msg.body && (
|
||||
<p className="whitespace-pre-wrap text-sm">{msg.body}</p>
|
||||
)}
|
||||
{shouldShowBody && <p className="whitespace-pre-wrap text-sm">{msg.body}</p>}
|
||||
{/* Anexos da mensagem */}
|
||||
{msg.attachments && msg.attachments.length > 0 && (
|
||||
<div className={cn("mt-2 flex flex-wrap gap-1.5", isOwn && "justify-end")}>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue