import { Formik, Form, Field } from "formik"; import FormGroup from "../components/FormGroup"; import type { ModemSettingsType } from "../../../types/types"; import { useWifiAndModem } from "../../../hooks/useCameraWifiandModem"; import { useEffect, useState } from "react"; import ModemToggle from "./ModemToggle"; import { faEyeSlash, faEye } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { ValidateIPaddress } from "../../../utils/utils"; import { toast, Toaster } from "sonner"; const ModemSettings = () => { const [showSettings, setShowSettings] = useState(false); const [showPwd, setShowPwd] = useState(false); const { modemQuery, modemMutation } = useWifiAndModem(); const apn = modemQuery?.data?.propAPN?.value; const username = modemQuery?.data?.propUsername.value; const password = modemQuery?.data?.propPassword?.value; const mode = modemQuery?.data?.propMode?.value; const serverPrimary = modemQuery?.data?.propNameServerPrimary?.value; const serverSecondary = modemQuery?.data?.propNameServerSecondary?.value; useEffect(() => { setShowSettings(mode === "AUTO"); }, [mode]); const inititalValues = { apn: apn ?? "", username: username ?? "", password: password ?? "", authenticationType: "PAP", serverPrimary: serverPrimary ?? "", serverSecondary: serverSecondary ?? "", }; const handleSubmit = async (values: ModemSettingsType) => { const invalidPrimary = ValidateIPaddress(values.serverPrimary); const invalidSecondary = ValidateIPaddress(values.serverSecondary); if (invalidPrimary || invalidSecondary) { toast.error(invalidPrimary || invalidSecondary, { id: "invalid-ip", }); return; } const modemConfig = { id: "ModemAndWifiManager-modem", fields: [ { property: "propAPN", value: values.apn, }, { property: "propPassword", value: values.password, }, { property: "propUsername", value: values.username, }, { property: "propMode", value: showSettings ? "AUTO" : "MANUAL", }, { property: "propNameServerPrimary", value: values.serverPrimary, }, { property: "propNameServerSecondary", value: values.serverSecondary, }, ], }; const response = await modemMutation.mutateAsync(modemConfig); if (!response?.id) { toast.success("Modem settings updated successfully", { id: "modemSettings", }); } }; return ( <> {({ isSubmitting }) => (
{!showSettings && ( <>
setShowPwd((s) => !s)} icon={showPwd ? faEyeSlash : faEye} />
)}
)}
); }; export default ModemSettings;