diff --git a/package.json b/package.json index 5192174..452eadf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "siteforge", "private": true, - "version": "1.1.3", + "version": "1.1.4", "type": "module", "scripts": { "dev": "vite", diff --git a/src/AdminPage.tsx b/src/AdminPage.tsx index da8b0c7..ff879f4 100644 --- a/src/AdminPage.tsx +++ b/src/AdminPage.tsx @@ -1086,24 +1086,31 @@ function buildSiteContentForSave(siteContent: SiteContent): SiteContent { } function QrCodeImage({ url, label }: { url: string; label: string }) { + const canvasRef = React.useRef(null) const [dataUrl, setDataUrl] = React.useState('') + React.useEffect(() => { - QRCode.toDataURL(url, { width: 256, margin: 2, color: { dark: '#000000', light: '#ffffff' } }) - .then(setDataUrl) - .catch(() => {}) + const canvas = canvasRef.current + if (!canvas) return + QRCode.toCanvas(canvas, url, { width: 256, margin: 2, color: { dark: '#000000', light: '#ffffff' } }, (err: Error | null | undefined) => { + if (err) { console.error('[QR]', err); return } + setDataUrl(canvas.toDataURL('image/png')) + }) }, [url]) - if (!dataUrl) return null + return (
- {`QR - - Download PNG - + + {dataUrl && ( + + Download PNG + + )}
) }