import {Node} from "@xyflow/react"; import {Button, Grid2, Tooltip, Typography} from "@mui/material"; import AccessIcon from "@mui/icons-material/Lan"; import useStore from "./model/store.ts"; import {useEffect, useState} from "react"; import {Configuration, Frontend, MetadataApi, ShareApi} from "./api"; import DeleteIcon from "@mui/icons-material/Delete"; import PropertyTable from "./PropertyTable.tsx"; import ReleaseAccessModal from "./ReleaseAccessModal.tsx"; interface AccessPanelProps { access: Node; } const AccessPanel = ({ access }: AccessPanelProps) => { const user = useStore((state) => state.user); const [detail, setDetail] = useState(null); const [releaseAccessOpen, setReleaseAccessOpen] = useState(false); const openReleaseAccess = () => { setReleaseAccessOpen(true); } const closeReleaseAccess = () => { setReleaseAccessOpen(false); } const releaseAccess = () => { if(detail && detail.token) { let cfg = new Configuration({ headers: { "X-TOKEN": user.token } }); let shareApi = new ShareApi(cfg); shareApi.unaccess({body: {frontendToken: detail.token, envZId: access.data.envZId as string, shrToken: detail.shrToken}}) .then(d => { setReleaseAccessOpen(false); }) .catch(e => { console.log("releaseAccess", e); }); } } useEffect(() => { let cfg = new Configuration({ headers: { "X-TOKEN": user.token } }); let metadataApi = new MetadataApi(cfg); metadataApi.getFrontendDetail({feId: access.data.feId as number}) .then(d => { delete d.id; delete d.zId; setDetail(d); }) .catch(e => { console.log("AccessPanel", e); }) }, [access]); const customProperties = { createdAt: row => new Date(row.value).toLocaleString(), updatedAt: row => new Date(row.value).toLocaleString(), } const labels = { createdAt: "Created", shrToken: "Share Token", token: "Frontend Token", updatedAt: "Updated", } return ( <> {String(access.data.label)}
A private access frontend with the token {access.id}
); } export default AccessPanel;