Skip to content

Commit

Permalink
Merge branch 'meshtastic:master' into feature/better-unknown
Browse files Browse the repository at this point in the history
  • Loading branch information
KomelT authored Sep 17, 2024
2 parents a2a9b37 + 57d0d27 commit c0cb059
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 9 deletions.
27 changes: 23 additions & 4 deletions src/components/PageComponents/Config/Network.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import type { NetworkValidation } from "@app/validation/config/network.js";
import { DynamicForm } from "@components/Form/DynamicForm.js";
import { useDevice } from "@core/stores/deviceStore.js";
import {
convertIntToIpAddress,
convertIpAddressToInt,
} from "@core/utils/ip.js";
import { Protobuf } from "@meshtastic/js";

export const Network = (): JSX.Element => {
Expand All @@ -13,9 +17,12 @@ export const Network = (): JSX.Element => {
case: "network",
value: {
...data,
ipv4Config: new Protobuf.Config.Config_NetworkConfig_IpV4Config(
data.ipv4Config,
),
ipv4Config: new Protobuf.Config.Config_NetworkConfig_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,
}),
},
},
}),
Expand All @@ -25,7 +32,19 @@ export const Network = (): JSX.Element => {
return (
<DynamicForm<NetworkValidation>
onSubmit={onSubmit}
defaultValues={config.network}
defaultValues={{
...config.network,
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),
},
}}
fieldGroups={[
{
label: "WiFi Config",
Expand Down
14 changes: 14 additions & 0 deletions src/core/utils/ip.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
export function convertIntToIpAddress(int: number): string {
return `${int & 0xff}.${(int >> 8) & 0xff}.${(int >> 16) & 0xff}.${(int >> 24) & 0xff}`;
}

export function convertIpAddressToInt(ip: string): number | null {
return (
ip
.split(".")
.reverse()
.reduce((ipnum, octet) => {
return (ipnum << 8) + Number.parseInt(octet);
}, 0) >>> 0
);
}
13 changes: 8 additions & 5 deletions src/validation/config/network.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,21 +41,24 @@ export class NetworkValidation

export class NetworkValidationIpV4Config
implements
Omit<Protobuf.Config.Config_NetworkConfig_IpV4Config, keyof Message>
Omit<
Protobuf.Config.Config_NetworkConfig_IpV4Config,
keyof Message | "ip" | "gateway" | "subnet" | "dns"
>
{
@IsIP()
@IsOptional()
ip: number;
ip: string;

@IsIP()
@IsOptional()
gateway: number;
gateway: string;

@IsIP()
@IsOptional()
subnet: number;
subnet: string;

@IsIP()
@IsOptional()
dns: number;
dns: string;
}

0 comments on commit c0cb059

Please sign in to comment.