diff --git a/convex/liveChat.ts b/convex/liveChat.ts index ae4910f..14fae77 100644 --- a/convex/liveChat.ts +++ b/convex/liveChat.ts @@ -500,7 +500,7 @@ export const checkMachineUpdates = query({ // QUERIES (Agente) // ============================================ -// Listar sessao ativa de um ticket +// Listar sessao ativa de um ticket e status da maquina export const getTicketSession = query({ args: { ticketId: v.id("tickets"), @@ -517,21 +517,30 @@ export const getTicketSession = query({ return null } + // Verificar se maquina esta online (sempre, mesmo sem sessao) + const machine = ticket.machineId ? await ctx.db.get(ticket.machineId) : null + const fiveMinutesAgo = Date.now() - 5 * 60 * 1000 + const machineOnline = machine?.lastHeartbeatAt && machine.lastHeartbeatAt > fiveMinutesAgo + const session = await ctx.db .query("liveChatSessions") .withIndex("by_ticket", (q) => q.eq("ticketId", ticketId)) .filter((q) => q.eq(q.field("status"), "ACTIVE")) .first() + // Sempre retorna status da maquina, mesmo sem sessao ativa if (!session) { - return null + return { + sessionId: null, + agentId: null, + agentName: null, + startedAt: null, + lastActivityAt: null, + unreadByAgent: 0, + machineOnline: Boolean(machineOnline), + } } - // Verificar se maquina esta online - const machine = ticket.machineId ? await ctx.db.get(ticket.machineId) : null - const fiveMinutesAgo = Date.now() - 5 * 60 * 1000 - const machineOnline = machine?.lastHeartbeatAt && machine.lastHeartbeatAt > fiveMinutesAgo - return { sessionId: session._id, agentId: session.agentId, diff --git a/src/components/tickets/ticket-summary-header.tsx b/src/components/tickets/ticket-summary-header.tsx index f723b8a..7b136b6 100644 --- a/src/components/tickets/ticket-summary-header.tsx +++ b/src/components/tickets/ticket-summary-header.tsx @@ -322,11 +322,11 @@ export function TicketSummaryHeader({ ticket }: TicketHeaderProps) { ? { ticketId: ticket.id as Id<"tickets">, viewerId: convexUserId as Id<"users"> } : "skip" ) as { - sessionId: Id<"liveChatSessions"> - agentId: Id<"users"> + sessionId: Id<"liveChatSessions"> | null + agentId: Id<"users"> | null agentName: string | null - startedAt: number - lastActivityAt: number + startedAt: number | null + lastActivityAt: number | null unreadByAgent: number machineOnline: boolean } | null | undefined