import QRCode from 'qrcode.react'; import { useEffect, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; import './style.css'; export const Card = () => { const firstLoad = useRef(true); const [qrvalue, setQrvalue] = useState(''); const [network, setNetwork] = useState({ ssid: '', encryptionMode: 'WPA', password: '', hidePassword: false, }); const [portrait, setPortrait] = useState(false); const { t } = useTranslation(); const escape = (v) => { const needsEscape = ['"', ';', ',', ':', '\\']; let escaped = ''; for (let i = 0; i < v.length; i++) { let c = v[i]; if (needsEscape.includes(c)) { c = '\\' + c; } escaped += c; } return escaped; }; const onPrint = () => { if (network.ssid.length > 0) { if (network.password.length < 8 && network.encryptionMode === 'WPA') { alert(t('wifi.alert.password.8')); } else if ( network.password.length < 5 && network.encryptionMode === 'WEP' ) { alert(t('wifi.alert.password.5')); } else { window.print(); } } else { alert(t('wifi.alert.name')); } }; useEffect(() => { if (firstLoad.current && window.innerWidth < 500) { firstLoad.current = false; setPortrait(true); } const ssid = escape(network.ssid); const password = escape(network.password); setQrvalue(`WIFI:T:${network.encryptionMode};S:${ssid};P:${password};;`); }, [network]); return (