import { useEnvironment } from "@keycloak/keycloak-ui-shared"; import { ActionList, ActionListItem, List, ListItem, MenuToggle, MenuToggleElement, PageSection, PageSectionVariants, Select, SelectList, SelectOption, } from "@patternfly/react-core"; import { useEffect, useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { getIssuer, requestVCOffer } from "../api"; import { CredentialsIssuer } from "../api/representations"; import { Page } from "../components/page/Page"; import { usePromise } from "../utils/usePromise"; export const Oid4Vci = () => { const context = useEnvironment(); const { t } = useTranslation(); const initialSelected = t("verifiableCredentialsSelectionDefault"); const [selected, setSelected] = useState(initialSelected); const [qrCode, setQrCode] = useState(""); const [isOpen, setIsOpen] = useState(false); const [offerQRVisible, setOfferQRVisible] = useState(false); const [credentialsIssuer, setCredentialsIssuer] = useState(); usePromise(() => getIssuer(context), setCredentialsIssuer); const selectOptions = useMemo(() => { if (typeof credentialsIssuer !== "undefined") { return credentialsIssuer.credential_configurations_supported; } return {}; }, [credentialsIssuer]); const dropdownItems = useMemo(() => { if (typeof selectOptions !== "undefined") { return Array.from(Object.keys(selectOptions)); } return []; }, [selectOptions]); useEffect(() => { if (initialSelected !== selected && credentialsIssuer !== undefined) { requestVCOffer(context, selectOptions[selected], credentialsIssuer).then( (blob) => { const reader = new FileReader(); reader.readAsDataURL(blob); reader.onloadend = function () { const result = reader.result; if (typeof result === "string") { setQrCode(result); setOfferQRVisible(true); setIsOpen(false); } }; }, ); } }, [selected]); const onToggleClick = () => { setIsOpen(!isOpen); }; const toggle = (toggleRef: React.Ref) => ( {selected} ); return ( {offerQRVisible && ( )} ); }; export default Oid4Vci;