import { Button, Heading, Link, Pane, Paragraph } from 'evergreen-ui'; import React, { useEffect, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; import logo from '../src/images/wifi.png'; import { Settings } from './components/Settings'; import { WifiCard } from './components/WifiCard'; import './style.css'; import { Translations } from './translations'; function App() { const html = document.querySelector('html'); const { t, i18n } = useTranslation(); const firstLoad = useRef(true); const [settings, setSettings] = useState({ // Network SSID name ssid: '', // Network password password: '', // Settings: Network encryption mode encryptionMode: 'WPA', // Settings: EAP Method eapMethod: 'PWD', // Settings: EAP identity eapIdentity: '', // Settings: Hide password on the printed card hidePassword: false, // Settings: Mark your network as hidden SSID hiddenSSID: false, // Settings: Portrait orientation portrait: false, // Settings: Additional cards additionalCards: 0, // Settings: Show tip (legend) on card hideTip: false, }); const [errors, setErrors] = useState({ ssidError: '', passwordError: '', eapIdentityError: '', }); const htmlDirection = (languageID) => { languageID = languageID || i18n.language; const rtl = Translations.filter((t) => t.id === languageID)[0]?.rtl; return rtl ? 'rtl' : 'ltr'; }; const onChangeLanguage = (language) => { html.style.direction = htmlDirection(language); i18n.changeLanguage(language); }; const onPrint = () => { if (!settings.ssid.length) { setErrors({ ...errors, ssidError: t('wifi.alert.name'), }); return; } if (settings.password.length < 8 && settings.encryptionMode === 'WPA') { setErrors({ ...errors, passwordError: t('wifi.alert.password.length.8'), }); return; } if (settings.password.length < 5 && settings.encryptionMode === 'WEP') { setErrors({ ...errors, passwordError: t('wifi.alert.password.length.5'), }); return; } if ( settings.password.length < 1 && settings.encryptionMode === 'WPA2-EAP' ) { setErrors({ ...errors, passwordError: t('wifi.alert.password'), }); return; } if ( settings.eapIdentity.length < 1 && settings.encryptionMode === 'WPA2-EAP' ) { setErrors({ ...errors, eapIdentityError: t('wifi.alert.eapIdentity'), }); return; } document.title = 'WiFi Card - ' + settings.ssid; window.print(); }; const onSSIDChange = (ssid) => { setErrors({ ...errors, ssidError: '' }); setSettings({ ...settings, ssid }); }; const onPasswordChange = (password) => { setErrors({ ...errors, passwordError: '' }); setSettings({ ...settings, password }); }; const onEncryptionModeChange = (encryptionMode) => { setErrors({ ...errors, passwordError: '' }); setSettings({ ...settings, encryptionMode }); }; const onEapMethodChange = (eapMethod) => { setSettings({ ...settings, eapMethod }); }; const onEapIdentityChange = (eapIdentity) => { setErrors({ ...errors, eapIdentityError: '' }); setSettings({ ...settings, eapIdentity }); }; const onOrientationChange = (portrait) => { setSettings({ ...settings, portrait }); }; const onHidePasswordChange = (hidePassword) => { setSettings({ ...settings, hidePassword }); }; const onHiddenSSIDChange = (hiddenSSID) => { setSettings({ ...settings, hiddenSSID }); }; const onAdditionalCardsChange = (additionalCardsStr) => { const amount = parseInt(additionalCardsStr); amount >= 0 && setSettings({ ...settings, additionalCards: amount }); }; const onHideTipChange = (hideTip) => { setSettings({ ...settings, hideTip }); }; const onFirstLoad = () => { html.style.direction = htmlDirection(); firstLoad.current = false; }; useEffect(() => { // Ensure the page direction is set properly on first load if (htmlDirection() === 'rtl') { html.style.direction = 'rtl'; } }); return ( icon {t('title')} {t('desc.use')} {t('desc.privacy')}{' '} {t('desc.source')} . {settings.additionalCards >= 0 && [...Array(settings.additionalCards + 1)].map((el, idx) => ( ))} ); } export default App;