import { FC, useEffect, useState } from "react"; // @ts-ignore - react-qr-code doesn't have React 19 compatible types yet import QRCodeInternal from "react-qr-code"; import { Box } from "@mui/material"; import { colors } from "../styles/theme"; type QRCodeProps = { name: string; label: string; token: string; verified: boolean; helperText?: string; getValue?: (id: string) => Promise>; refreshInterval?: number; }; export const QRCode: FC = ({ name, label, token, verified, helperText, getValue, refreshInterval, }) => { const [value, setValue] = useState(""); const [kind, setKind] = useState("data"); const { white } = colors; useEffect(() => { if (!verified && getValue && refreshInterval) { // Fetch immediately on mount const fetchQR = async () => { const { qr, kind } = await getValue(token); setValue(qr); setKind(kind); }; fetchQR(); // Then set up interval for refreshes const interval = setInterval(fetchQR, refreshInterval * 1000); return () => clearInterval(interval); } }, [getValue, refreshInterval, token, verified]); return !verified ? ( {value ? ( kind === "data" ? ( ) : ( {name} ) ) : ( Loading QR code... )} {helperText} ) : null; };