fix: harden ticket client data guards

This commit is contained in:
Esdras Renan 2025-11-01 01:48:15 -03:00
parent 5c5207ceb8
commit a3d431efa8
9 changed files with 129 additions and 111 deletions

View file

@ -128,14 +128,14 @@ export function NewTicketDialog({ triggerClassName }: { triggerClassName?: strin
const queuesEnabled = Boolean(isStaff && convexUserId)
const queueArgs = queuesEnabled
? { tenantId: DEFAULT_TENANT_ID, viewerId: convexUserId as Id<"users"> }
: "skip"
: undefined
useDefaultQueues(DEFAULT_TENANT_ID)
const queuesRaw = useQuery(
queuesEnabled ? api.queues.summary : "skip",
queueArgs
) as TicketQueueSummary[] | undefined
const queues = useMemo(() => queuesRaw ?? [], [queuesRaw])
const queuesRemote = useQuery(queuesEnabled ? api.queues.summary : "skip", queueArgs)
const queues = useMemo(
() => (Array.isArray(queuesRemote) ? (queuesRemote as TicketQueueSummary[]) : []),
[queuesRemote]
)
const create = useMutation(api.tickets.create)
const addComment = useMutation(api.tickets.addComment)
const staffRaw = useQuery(api.users.listAgents, { tenantId: DEFAULT_TENANT_ID }) as Doc<"users">[] | undefined
@ -145,29 +145,34 @@ export function NewTicketDialog({ triggerClassName }: { triggerClassName?: strin
)
const directoryQueryEnabled = queuesEnabled && Boolean(convexUserId)
const companiesRaw = useQuery(
const companiesArgs = directoryQueryEnabled
? { tenantId: DEFAULT_TENANT_ID, viewerId: convexUserId as Id<"users"> }
: undefined
const companiesRemote = useQuery(
directoryQueryEnabled ? api.companies.list : "skip",
directoryQueryEnabled
? { tenantId: DEFAULT_TENANT_ID, viewerId: convexUserId as Id<"users"> }
: "skip"
) as Array<{ id: string; name: string; slug?: string | null }> | undefined
companiesArgs
)
const companies = useMemo(
() =>
(companiesRaw ?? []).map((company) => ({
(Array.isArray(companiesRemote) ? companiesRemote : []).map((company) => ({
id: String(company.id),
name: company.name,
slug: company.slug ?? null,
})),
[companiesRaw]
[companiesRemote]
)
const customersRaw = useQuery(
const customersArgs = directoryQueryEnabled
? { tenantId: DEFAULT_TENANT_ID, viewerId: convexUserId as Id<"users"> }
: undefined
const customersRemote = useQuery(
directoryQueryEnabled ? api.users.listCustomers : "skip",
directoryQueryEnabled
? { tenantId: DEFAULT_TENANT_ID, viewerId: convexUserId as Id<"users"> }
: "skip"
) as CustomerOption[] | undefined
const customers = useMemo(() => customersRaw ?? [], [customersRaw])
customersArgs
)
const customers = useMemo(
() => (Array.isArray(customersRemote) ? (customersRemote as CustomerOption[]) : []),
[customersRemote]
)
const [attachments, setAttachments] = useState<Array<{ storageId: string; name: string; size?: number; type?: string }>>([])
const [customersInitialized, setCustomersInitialized] = useState(false)
const attachmentsTotalBytes = useMemo(