fix: harden ticket client data guards
This commit is contained in:
parent
5c5207ceb8
commit
a3d431efa8
9 changed files with 129 additions and 111 deletions
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue