feat: improve ticket export and navigation

This commit is contained in:
Esdras Renan 2025-10-13 00:08:18 -03:00
parent 0731c5d1ea
commit 7d6f3bea01
28 changed files with 1612 additions and 609 deletions

View file

@ -31,11 +31,12 @@ function toHtml(text: string) {
export function PortalTicketForm() {
const router = useRouter()
const { convexUserId, session } = useAuth()
const { convexUserId, session, machineContext } = useAuth()
const createTicket = useMutation(api.tickets.create)
const addComment = useMutation(api.tickets.addComment)
const tenantId = session?.user.tenantId ?? DEFAULT_TENANT_ID
const viewerId = (convexUserId ?? machineContext?.assignedUserId ?? null) as Id<"users"> | null
const [subject, setSubject] = useState("")
const [summary, setSummary] = useState("")
@ -51,7 +52,7 @@ export function PortalTicketForm() {
async function handleSubmit(event: React.FormEvent) {
event.preventDefault()
if (!convexUserId || !isFormValid || isSubmitting) return
if (!viewerId || !isFormValid || isSubmitting) return
const trimmedSubject = subject.trim()
const trimmedSummary = summary.trim()
@ -66,14 +67,14 @@ export function PortalTicketForm() {
toast.loading("Abrindo chamado...", { id: "portal-new-ticket" })
try {
const id = await createTicket({
actorId: convexUserId as Id<"users">,
actorId: viewerId,
tenantId,
subject: trimmedSubject,
summary: trimmedSummary || undefined,
priority: DEFAULT_PRIORITY,
channel: "MANUAL",
queueId: undefined,
requesterId: convexUserId as Id<"users">,
requesterId: viewerId,
categoryId: categoryId as Id<"ticketCategories">,
subcategoryId: subcategoryId as Id<"ticketSubcategories">,
})
@ -89,7 +90,7 @@ export function PortalTicketForm() {
}))
await addComment({
ticketId: id as Id<"tickets">,
authorId: convexUserId as Id<"users">,
authorId: viewerId,
visibility: "PUBLIC",
body: htmlBody,
attachments: typedAttachments,
@ -186,7 +187,7 @@ export function PortalTicketForm() {
</Button>
<Button
type="submit"
disabled={!isFormValid || isSubmitting}
disabled={!isFormValid || isSubmitting || !viewerId}
className="rounded-full bg-neutral-900 px-6 text-sm font-semibold text-white hover:bg-neutral-900/90"
>
Registrar chamado