diff --git a/src/components/PageComponents/Config/Network.tsx b/src/components/PageComponents/Config/Network.tsx index 1b31db59..df6bd78e 100644 --- a/src/components/PageComponents/Config/Network.tsx +++ b/src/components/PageComponents/Config/Network.tsx @@ -2,10 +2,27 @@ import type { NetworkValidation } from "@app/validation/config/network.js"; import { DynamicForm } from "@components/Form/DynamicForm.js"; import { useDevice } from "@core/stores/deviceStore.js"; import { Protobuf } from "@meshtastic/js"; +import { convertIntToIpAddress, convertIpAddressToInt } from "@core/utils/ip.js"; export const Network = (): JSX.Element => { const { config, setWorkingConfig } = useDevice(); + const netConfig = { + wifiEnabled: config.network?.wifiEnabled, + wifiSsid: config.network?.wifiSsid, + wifiPsk: config.network?.wifiPsk, + ethEnabled: config.network?.ethEnabled, + addressMode: config.network?.addressMode, + ipv4Config: { + ip: convertIntToIpAddress(config.network?.ipv4Config?.ip ?? 0), + gateway: convertIntToIpAddress(config.network?.ipv4Config?.gateway ?? 0), + subnet: convertIntToIpAddress(config.network?.ipv4Config?.subnet ?? 0), + dns: convertIntToIpAddress(config.network?.ipv4Config?.dns ?? 0), + }, + ntpServer: config.network?.ntpServer, + rsyslogServer: config.network?.rsyslogServer, + } + const onSubmit = (data: NetworkValidation) => { setWorkingConfig( new Protobuf.Config.Config({ @@ -14,7 +31,12 @@ export const Network = (): JSX.Element => { value: { ...data, ipv4Config: new Protobuf.Config.Config_NetworkConfig_IpV4Config( - data.ipv4Config, + { + ip: convertIpAddressToInt(data.ipv4Config.ip) ?? 0, + gateway: convertIpAddressToInt(data.ipv4Config.gateway) ?? 0, + subnet: convertIpAddressToInt(data.ipv4Config.subnet) ?? 0, + dns: convertIpAddressToInt(data.ipv4Config.dns) ?? 0, + }, ), }, }, @@ -25,7 +47,7 @@ export const Network = (): JSX.Element => { return ( onSubmit={onSubmit} - defaultValues={config.network} + defaultValues={netConfig} fieldGroups={[ { label: "WiFi Config", diff --git a/src/validation/config/network.ts b/src/validation/config/network.ts index 8f851d69..65953aae 100644 --- a/src/validation/config/network.ts +++ b/src/validation/config/network.ts @@ -45,17 +45,17 @@ export class NetworkValidationIpV4Config { @IsIP() @IsOptional() - ip: number; + ip: string; @IsIP() @IsOptional() - gateway: number; + gateway: string; @IsIP() @IsOptional() - subnet: number; + subnet: string; @IsIP() @IsOptional() - dns: number; + dns: string; }