import { useListQuery } from "@metis/core/client"; import { Button } from "@repo/shadcn-ui/components/button"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { catalogApi, catalogKeys } from "../../../catalog/shared/api"; import { InventoryFeedback } from "../../../shared"; import { infrastructureApi, infrastructureKeys } from "../api/infrastructure-api"; import { infrastructureRoles } from "../helpers/infrastructure-roles"; import { InfrastructureEditorDialog } from "./infrastructure-editor-dialog"; export function AssetInfrastructurePanel({ companyId, assetId, assetName, templateId, }: { companyId: string; assetId: string; assetName: string; templateId: string; }) { const { t, i18n } = useTranslation("assets"); const [editing, setEditing] = useState(false); const query = useListQuery({ queryKey: infrastructureKeys.company(companyId), queryFn: () => infrastructureApi.get(companyId), }); const catalog = useListQuery({ queryKey: catalogKeys.scope(companyId), queryFn: () => catalogApi.get(companyId), }); const current = query.data?.items.find((item) => item.assetId === assetId); return (
{t("loading")}
}{current.values.roles.map((role) => t(`infrastructure.roles.${role}`)).join(" · ")}
) : null} {query.isSuccess && !current?.values.interfaces.length && ({t("infrastructure.emptyInterfaces")}
)}{entry.name} · {t(`infrastructure.kinds.${entry.kind}`)}
{entry.addresses.length ? entry.addresses.map((address) => address.address).join(" · ") : "—"}
{t("infrastructure.mac")}: {entry.mac || "—"}
{entry.notes &&{entry.notes}
}{new Intl.DateTimeFormat(i18n.language, { dateStyle: "short", timeStyle: "short", }).format(new Date(revision.recordedAt))}{" "} · {revision.actorName}
{revision.values.roles .map((role) => t(`infrastructure.roles.${role}`)) .join(" · ") || "—"}
{entry.notes}
}