import { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography, } from "@mui/material"; import { useNavigate } from "react-router-dom"; import { APITokenURL, CreatedAPIToken } from "../api/TokensApi"; import { CopyToClipboard } from "../widgets/CopyToClipboard"; import { InlineCode } from "../widgets/InlineCode"; export function CreatedTokenDialog(p: { createdToken: CreatedAPIToken; }): React.ReactElement { const navigate = useNavigate(); const close = () => { navigate(APITokenURL(p.createdToken.token)); }; return ( <Dialog open> <DialogTitle>Token successfully created</DialogTitle> <DialogContent> <Typography> Your token was successfully created. You need now to copy the private key, as it will be technically impossible to recover it after closing this dialog. </Typography> <InfoBlock label="Token ID" value={p.createdToken.token.id} /> <InfoBlock label="Key algorithm" value={p.createdToken.priv_key.alg} /> <InfoBlock label="Private key" value={p.createdToken.priv_key.priv} /> </DialogContent> <DialogActions> <Button onClick={close} color="error"> I copied the key, close this dialog </Button> </DialogActions> </Dialog> ); } function InfoBlock( p: React.PropsWithChildren<{ label: string; value: string }> ): React.ReactElement { return ( <div style={{ display: "flex", flexDirection: "column", margin: "20px 10px" }} > <Typography variant="overline">{p.label}</Typography> <CopyToClipboard content={p.value}> <InlineCode>{p.value}</InlineCode> </CopyToClipboard> </div> ); }