fix: alinhar janela de reabertura do portal com regras do backend

This commit is contained in:
Esdras Renan 2025-11-14 11:09:53 -03:00
parent 2b0b72cd8b
commit aadf156ba5
2 changed files with 34 additions and 11 deletions

View file

@ -147,20 +147,33 @@ export function TicketSummaryHeader({ ticket }: TicketHeaderProps) {
: null
const viewerId = convexUserId ?? null
const viewerRole = (role ?? "").toLowerCase()
const viewerEmail = (session?.user?.email ?? machineContext?.assignedUserEmail ?? "").trim().toLowerCase()
const [status, setStatus] = useState<TicketStatus>(ticket.status)
const reopenDeadline = ticket.reopenDeadline ?? null
const isRequester = Boolean(ticket.requester?.id && viewerId && ticket.requester.id === viewerId)
const reopenWindowActive = reopenDeadline ? reopenDeadline > Date.now() : false
const rawReopenDeadline = ticket.reopenDeadline ?? null
const fallbackClosedMs = ticket.closedAt?.getTime() ?? ticket.resolvedAt?.getTime() ?? null
const DEFAULT_REOPEN_DAYS = 7
const inferredDeadline = rawReopenDeadline
? rawReopenDeadline
: fallbackClosedMs
? fallbackClosedMs + DEFAULT_REOPEN_DAYS * 24 * 60 * 60 * 1000
: null
const isRequesterById = Boolean(ticket.requester?.id && viewerId && ticket.requester.id === viewerId)
const isRequesterByEmail = Boolean(
viewerEmail && ticket.requester?.email && viewerEmail === ticket.requester.email.trim().toLowerCase(),
)
const isRequester = isRequesterById || isRequesterByEmail
const reopenWindowActive = inferredDeadline ? inferredDeadline > Date.now() : true
const canReopenTicket =
status === "RESOLVED" && reopenWindowActive && (isStaff || viewerRole === "manager" || isRequester)
const reopenDeadlineLabel = useMemo(() => {
if (!reopenDeadline) return null
const deadline = inferredDeadline ?? rawReopenDeadline
if (!deadline) return null
try {
return new Date(reopenDeadline).toLocaleString("pt-BR")
return new Date(deadline).toLocaleString("pt-BR")
} catch {
return null
}
}, [reopenDeadline])
}, [inferredDeadline, rawReopenDeadline])
const viewerEmail = session?.user?.email ?? machineContext?.assignedUserEmail ?? null
const viewerAvatar = session?.user?.avatarUrl ?? null
const viewerAgentMeta = useMemo(