import {Node} from "@xyflow/react"; import {Box, Button, Checkbox, FormControlLabel, Grid2, Modal, Tooltip, Typography} from "@mui/material"; import AccessIcon from "@mui/icons-material/Lan"; import useStore from "./model/store.ts"; import {useEffect, useRef, useState} from "react"; import {Configuration, Frontend, MetadataApi, ShareApi} from "./api"; import DeleteIcon from "@mui/icons-material/Delete"; import PropertyTable from "./PropertyTable.tsx"; import {modalStyle} from "./styling/theme.ts"; interface ReleaseAccessProps { close: () => void; isOpen: boolean; detail: Frontend; action: () => void; } const ReleaseAccessModal = ({ close, isOpen, detail, action }: ReleaseAccessProps) => { const [feToken, setFeToken] = useState(""); const [checked, setChecked] = useState(false); const checkedRef = useRef(checked); const toggleChecked = (event: React.ChangeEvent) => { setChecked(!checkedRef.current); } useEffect(() => { setChecked(false); }, [isOpen]); useEffect(() => { if(detail && detail.token) { setFeToken(detail.token); } }, [detail]); return ( Release Access Would you like to release the access {feToken} ? } label={

I confirm the release of {feToken}

} sx={{ mt: 2 }} />
); } 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;