import React, { useState, useContext } from "react"; import { Alert, AlertVariant, Form, FormGroup, ModalVariant, Select, SelectOption, SelectVariant, Stack, StackItem, TextArea, } from "@patternfly/react-core"; import FileSaver from "file-saver"; import { ConfirmDialogModal } from "../confirm-dialog/ConfirmDialog"; import { HelpItem } from "../help-enabler/HelpItem"; import { useTranslation } from "react-i18next"; import { useServerInfo } from "../../context/server-info/ServerInfoProvider"; import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import { HelpContext } from "../help-enabler/HelpHeader"; type DownloadDialogProps = { id: string; protocol?: string; open: boolean; toggleDialog: () => void; }; export const DownloadDialog = ({ id, open, toggleDialog, protocol = "openid-connect", }: DownloadDialogProps) => { const adminClient = useAdminClient(); const { t } = useTranslation("common"); const { enabled } = useContext(HelpContext); const serverInfo = useServerInfo(); const configFormats = serverInfo.clientInstallations![protocol]; const [selected, setSelected] = useState( configFormats[configFormats.length - 1].id ); const [snippet, setSnippet] = useState(""); const [openType, setOpenType] = useState(false); useFetch( async () => { const snippet = await adminClient.clients.getInstallationProviders({ id, providerId: selected, }); if (typeof snippet === "string") { return snippet; } else { return JSON.stringify(snippet, undefined, 3); } }, (snippet) => setSnippet(snippet), [id, selected] ); return ( { const config = configFormats.find((config) => config.id === selected)!; FileSaver.saveAs( new Blob([snippet], { type: config.mediaType }), config.filename ); }} open={open} toggleDialog={toggleDialog} variant={ModalVariant.medium} >
{enabled && ( { configFormats.find( (configFormat) => configFormat.id === selected )?.helpText } )} } > } >