import { CameraIcon, Card, Heading, MobilePhoneIcon, Pane, Paragraph, Text, TextareaField, } from 'evergreen-ui'; import QRCode from 'qrcode.react'; import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import logo from '../../src/images/wifi.png'; import './style.css'; export const WifiCard = (props) => { const { t } = useTranslation(); const [qrvalue, setQrvalue] = useState(''); const escape = (v) => { const needsEscape = ['"', ';', ',', ':', '\\']; let escaped = ''; for (const c of v) { if (needsEscape.includes(c)) { escaped += `\\${c}`; } else { escaped += c; } } return escaped; }; useEffect(() => { let opts = {}; opts.T = props.settings.encryptionMode || 'nopass'; if (props.settings.encryptionMode === 'WPA2-EAP') { opts.E = props.settings.eapMethod; opts.I = props.settings.eapIdentity; } opts.S = escape(props.settings.ssid); opts.P = escape(props.settings.password); opts.H = props.settings.hiddenSSID; let data = ''; Object.entries(opts).forEach(([k, v]) => (data += `${k}:${v};`)); const qrval = `WIFI:${data};`; setQrvalue(qrval); }, [props.settings]); const portraitWidth = () => { const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); return isMobile ? '100%' : '280px'; }; const passwordFieldLabel = () => { const hiddenPassword = props.settings.hidePassword || !props.settings.encryptionMode; return hiddenPassword ? '' : t('wifi.password'); }; const eapIdentityFieldLabel = () => { const hiddenIdentity = props.settings.encryptionMode !== 'WPA2-EAP'; return hiddenIdentity ? '' : t('wifi.identity'); }; const eapMethodFieldLabel = () => { return !eapIdentityFieldLabel() ? '' : t('wifi.encryption.eapMethod'); }; return ( icon {t('wifi.login')} props.onSSIDChange(e.target.value)} isInvalid={!!props.ssidError} validationMessage={!!props.ssidError && props.ssidError} /> {props.settings.encryptionMode === 'WPA2-EAP' && ( <> props.onEapIdentityChange(e.target.value)} isInvalid={!!props.eapIdentityError} validationMessage={ !!props.eapIdentityError && props.eapIdentityError } /> )} {!(props.settings.hidePassword || !props.settings.encryptionMode) && ( 40 ? '5em' : 'auto' } marginBottom={5} label={passwordFieldLabel()} placeholder={t('wifi.password.placeholder')} value={props.settings.password} onChange={(e) => props.onPasswordChange(e.target.value)} isInvalid={!!props.passwordError} validationMessage={!!props.passwordError && props.passwordError} /> )} {!props.settings.hideTip && ( <>
{t('wifi.tip')} )}
); };