fix: harden ticket client data guards
This commit is contained in:
parent
5c5207ceb8
commit
a3d431efa8
9 changed files with 129 additions and 111 deletions
|
|
@ -167,42 +167,47 @@ export function TicketSummaryHeader({ ticket }: TicketHeaderProps) {
|
|||
const updateCategories = useMutation(api.tickets.updateCategories)
|
||||
const agents = (useQuery(api.users.listAgents, { tenantId: ticket.tenantId }) as Doc<"users">[] | undefined) ?? []
|
||||
const queuesEnabled = Boolean(isStaff && convexUserId)
|
||||
const companiesRaw = useQuery(
|
||||
const companiesArgs = convexUserId
|
||||
? { tenantId: ticket.tenantId, viewerId: convexUserId as Id<"users"> }
|
||||
: undefined
|
||||
const companiesRemote = useQuery(
|
||||
convexUserId ? api.companies.list : "skip",
|
||||
convexUserId
|
||||
? { tenantId: ticket.tenantId, 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 = convexUserId
|
||||
? { tenantId: ticket.tenantId, viewerId: convexUserId as Id<"users"> }
|
||||
: undefined
|
||||
const customersRemote = useQuery(
|
||||
convexUserId ? api.users.listCustomers : "skip",
|
||||
convexUserId
|
||||
? { tenantId: ticket.tenantId, 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 queueArgs = queuesEnabled
|
||||
? { tenantId: ticket.tenantId, viewerId: convexUserId as Id<"users"> }
|
||||
: "skip"
|
||||
const queues = (
|
||||
useQuery(queuesEnabled ? api.queues.summary : "skip", queueArgs) as TicketQueueSummary[] | undefined
|
||||
) ?? []
|
||||
: undefined
|
||||
const queuesResult = useQuery(queuesEnabled ? api.queues.summary : "skip", queueArgs)
|
||||
const queues: TicketQueueSummary[] = Array.isArray(queuesResult) ? queuesResult : []
|
||||
const { categories, isLoading: categoriesLoading } = useTicketCategories(ticket.tenantId)
|
||||
const workSummaryArgs = convexUserId
|
||||
? { ticketId: ticket.id as Id<"tickets">, viewerId: convexUserId as Id<"users"> }
|
||||
: undefined
|
||||
const workSummaryRemote = useQuery(
|
||||
api.tickets.workSummary,
|
||||
convexUserId
|
||||
? { ticketId: ticket.id as Id<"tickets">, viewerId: convexUserId as Id<"users"> }
|
||||
: "skip"
|
||||
convexUserId ? api.tickets.workSummary : "skip",
|
||||
workSummaryArgs
|
||||
) as
|
||||
| {
|
||||
ticketId: Id<"tickets">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue