'use client' import { RiQrCodeLine, } from '@remixicon/react' import { QRCodeCanvas as QRCode } from 'qrcode.react' import * as React from 'react' import { useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import ActionButton from '@/app/components/base/action-button' import Tooltip from '@/app/components/base/tooltip' import { downloadUrl } from '@/utils/download' type Props = { content: string } const prefixEmbedded = 'overview.appInfo.qrcode.title' const ShareQRCode = ({ content }: Props) => { const { t } = useTranslation() const [isShow, setIsShow] = useState(false) const qrCodeRef = useRef(null) const toggleQRCode = (event: React.MouseEvent) => { event.stopPropagation() setIsShow(prev => !prev) } useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if (qrCodeRef.current && !qrCodeRef.current.contains(event.target as Node)) setIsShow(false) } if (isShow) document.addEventListener('click', handleClickOutside) return () => { document.removeEventListener('click', handleClickOutside) } }, [isShow]) const downloadQR = () => { const canvas = qrCodeRef.current?.querySelector('canvas') if (!(canvas instanceof HTMLCanvasElement)) return downloadUrl({ url: canvas.toDataURL(), fileName: 'qrcode.png' }) } const handlePanelClick = (event: React.MouseEvent) => { event.stopPropagation() } return (
{isShow && (
{t('overview.appInfo.qrcode.scan', { ns: 'appOverview' })}
ยท
{t('overview.appInfo.qrcode.download', { ns: 'appOverview' })}
)}
) } export default ShareQRCode