admin: remove 'Espaço (ID interno)' from Convites and improve filter bar alignment; tickets: fix running timer by optimistic updating start/pause times

This commit is contained in:
Esdras Renan 2025-10-19 16:27:12 -03:00
parent a325d612cb
commit 7c3bf00790
2 changed files with 41 additions and 20 deletions

View file

@ -430,6 +430,27 @@ export function TicketSummaryHeader({ ticket }: TicketHeaderProps) {
} else {
toast.success("Atendimento iniciado", { id: "work" })
}
// Otimização local: garantir startedAt correto imediatamente
const startedAtMs = typeof result?.startedAt === "number" ? result.startedAt : Date.now()
const sessionId = (result as { sessionId?: unknown })?.sessionId as Id<"ticketWorkSessions"> | undefined
setWorkSummary((prev) => {
const base: WorkSummarySnapshot = prev ?? {
ticketId: ticket.id as Id<"tickets">,
totalWorkedMs: 0,
internalWorkedMs: 0,
externalWorkedMs: 0,
activeSession: null,
}
return {
...base,
activeSession: {
id: (sessionId as Id<"ticketWorkSessions">) ?? (base.activeSession?.id as Id<"ticketWorkSessions">),
agentId: convexUserId as Id<"users">,
startedAt: startedAtMs,
workType,
},
}
})
} catch (error) {
const message = error instanceof Error ? error.message : "Não foi possível atualizar o atendimento"
toast.error(message, { id: "work" })
@ -454,6 +475,19 @@ export function TicketSummaryHeader({ ticket }: TicketHeaderProps) {
toast.success("Atendimento pausado", { id: "work" })
}
setPauseDialogOpen(false)
// Otimização local: aplicar duração retornada no total e limpar sessão ativa
const delta = typeof (result as { durationMs?: unknown })?.durationMs === "number" ? (result as { durationMs?: number }).durationMs! : 0
setWorkSummary((prev) => {
if (!prev) return prev
const workType = prev.activeSession?.workType ?? "INTERNAL"
return {
...prev,
totalWorkedMs: prev.totalWorkedMs + delta,
internalWorkedMs: prev.internalWorkedMs + (workType === "INTERNAL" ? delta : 0),
externalWorkedMs: prev.externalWorkedMs + (workType === "EXTERNAL" ? delta : 0),
activeSession: null,
}
})
} catch (error) {
const message = error instanceof Error ? error.message : "Não foi possível atualizar o atendimento"
toast.error(message, { id: "work" })