import { useQuery } from "@tanstack/react-query"; import { useTranslation } from "react-i18next"; import { catalogApi, catalogKeys } from "./catalog-api"; import { inventoryApi, inventoryKeys } from "./inventory-api"; import { InventoryFeedback, ResourceForm } from "./resource-form"; export function ResourceEditor({ companyId, csrfToken, resourceId, initialKind, initialAddress = "", initialAccess, onSaved, allowQuickCreate = true, }: { companyId: string; csrfToken: string; resourceId?: string | undefined; initialKind?: "mailbox" | "access" | undefined; initialAddress?: string; initialAccess?: | { resourceTypeId: string; systemId: string | null; environmentId: string | null } | undefined; onSaved: (id: string) => void; allowQuickCreate?: boolean; }) { const { t } = useTranslation("resources"); const catalog = useQuery({ queryKey: catalogKeys.scope(companyId), queryFn: () => catalogApi.get(companyId), }); const inventory = useQuery({ queryKey: inventoryKeys.company(companyId), queryFn: () => inventoryApi.get(companyId), }); if (catalog.isPending || inventory.isPending) { return

{t("loading")}

; } if (catalog.error || inventory.error) { return ; } const resource = inventory.data?.resources.find((item) => item.id === resourceId); if (resourceId && !resource) { return

{t("inventoryErrors.RESOURCE_NOT_FOUND")}

; } if (!catalog.data) { return null; } const referenceFieldId = catalog.data.items.find( (item) => item.builtinKey === "field:reference" )?.id; const initialIntegration = initialAccess && referenceFieldId ? { kind: "access" as const, referenceFieldId, ...initialAccess } : undefined; return ( ); }