import React from 'react'; import { useForm, useWatch } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; import { FiCode, FiMenu } from 'react-icons/fi'; import JSONPretty from 'react-json-pretty'; import { useAppSelector } from '@app/hooks/redux'; import { FormFooter } from '@components/FormFooter'; import { Card } from '@components/generic/Card'; import { Cover } from '@components/generic/Cover'; import { Checkbox } from '@components/generic/form/Checkbox'; import { Input } from '@components/generic/form/Input'; import { IconButton } from '@components/generic/IconButton'; import { PrimaryTemplate } from '@components/templates/PrimaryTemplate'; import { connection } from '@core/connection'; import type { Protobuf } from '@meshtastic/meshtasticjs'; export interface WiFiProps { navOpen?: boolean; setNavOpen?: React.Dispatch>; } export const WiFi = ({ navOpen, setNavOpen }: WiFiProps): JSX.Element => { const { t } = useTranslation(); const preferences = useAppSelector( (state) => state.meshtastic.radio.preferences, ); const [debug, setDebug] = React.useState(false); const [loading, setLoading] = React.useState(false); const { register, handleSubmit, formState, reset, control } = useForm({ defaultValues: preferences, }); const watchWifiApMode = useWatch({ control, name: 'wifiApMode', defaultValue: false, }); React.useEffect(() => { reset(preferences); }, [reset, preferences]); const onSubmit = handleSubmit((data) => { setLoading(true); void connection.setPreferences(data, async () => { await Promise.resolve(); setLoading(false); }); }); return ( } onClick={(): void => { setNavOpen && setNavOpen(!navOpen); }} /> } rightButton={ } active={debug} onClick={(): void => { setDebug(!debug); }} /> } footer={ } > } />
); };