Updated all wifi endpoints to use protobufs

This commit is contained in:
Niklas Jensen
2026-01-30 18:36:39 +01:00
committed by nikguin04
parent 56d81f75cb
commit 4575f63921
7 changed files with 100 additions and 98 deletions
-43
View File
@@ -17,37 +17,6 @@ export enum MessageTopic {
rssi = 'rssi'
}
export type WifiStatus = {
status: number
local_ip: number
mac_address: string
rssi: number
ssid: string
bssid: string
channel: number
subnet_mask: number
gateway_ip: number
dns_ip_1: number
dns_ip_2?: number
}
export type KnownNetworkItem = {
ssid: string
password: string
static_ip_config: boolean
local_ip?: number
subnet_mask?: number
gateway_ip?: number
dns_ip_1?: number
dns_ip_2?: number
}
export type WifiSettings = {
hostname: string
priority_RSSI: boolean
wifi_networks: KnownNetworkItem[]
}
export type vector = { x: number; y: number }
export type GithubRelease = {
@@ -59,18 +28,6 @@ export type GithubRelease = {
}>
}
export type NetworkList = {
networks: NetworkItem[]
}
export type NetworkItem = {
rssi: number
ssid: string
bssid: string
channel: number
encryption_type: number
}
export type Rssi = {
rssi: number
ssid: string
+8 -7
View File
@@ -3,14 +3,14 @@
import { fly } from 'svelte/transition'
import { onMount, onDestroy } from 'svelte'
import RssiIndicator from '$lib/components/statusbar/RSSIIndicator.svelte'
import type { NetworkItem, NetworkList } from '$lib/types/models'
import { type WifiNetworkScan, type Response as ProtoResponse } from '$lib/platform_shared/api'
import { api } from '$lib/api'
import { AP, Network, Reload, Cancel } from '$lib/components/icons'
import { modals, exitBeforeEnter, type ModalProps } from 'svelte-modals'
let { isOpen, storeNetwork }: ModalProps = $props()
const encryptionType = [
const encryptionTypes = [
'Open',
'WEP',
'WPA PSK',
@@ -22,7 +22,7 @@
'WAPI PSK'
]
let listOfNetworks: NetworkItem[] = $state([])
let listOfNetworks = $state<WifiNetworkScan[]>([])
let scanActive = $state(false)
@@ -38,13 +38,14 @@
}
async function pollingResults() {
const result = await api.get<NetworkList>('/api/wifi/networks')
const result = await api.get<ProtoResponse>('/api/wifi/networks')
if (result.isErr()) {
console.error(`Error occurred while fetching: `, result.inner)
return false
}
let response = result.inner
listOfNetworks = response.networks
if (result.inner.wifiNetworkList) {
listOfNetworks = result.inner.wifiNetworkList.networks
}
scanActive = false
if (listOfNetworks.length) {
clearInterval(pollingId)
@@ -106,7 +107,7 @@
<div>
<div class="font-bold">{network.ssid}</div>
<div class="text-sm opacity-75">
Security: {encryptionType[network.encryption_type]},
Security: {encryptionTypes[network.encryptionType]},
Channel: {network.channel}
</div>
</div>
+18 -11
View File
@@ -10,8 +10,13 @@
import ScanNetworks from './Scan.svelte'
import Spinner from '$lib/components/Spinner.svelte'
import InfoDialog from '$lib/components/InfoDialog.svelte'
import { type WifiStatus } from '$lib/types/models'
import { WifiSettings, WifiNetwork, Response, Request } from '$lib/platform_shared/api'
import {
type WifiStatus,
type WifiSettings,
type WifiNetwork,
type Response as ProtoResponse,
Request
} from '$lib/platform_shared/api'
import { api } from '$lib/api'
import { ipToUint32, uint32ToIp, isValidIpString } from '$lib/utilities'
import {
@@ -80,17 +85,19 @@
let formErrorhostname = $state(false)
async function getWifiStatus() {
const result = await api.get<WifiStatus>('/api/wifi/sta/status')
const result = await api.get<ProtoResponse>('/api/wifi/sta/status')
if (result.isErr()) {
console.error(`Error occurred while fetching: `, result.inner)
return
}
wifiStatus = result.inner
if (result.inner.wifiStatus) {
wifiStatus = result.inner.wifiStatus
}
return wifiStatus
}
async function getWifiSettings() {
const result = await api.get<Response>('/api/wifi/sta/settings')
const result = await api.get<ProtoResponse>('/api/wifi/sta/settings')
if (result.isErr()) {
console.error(`Error occurred while fetching: `, result.inner)
return
@@ -101,7 +108,7 @@
}
async function postWiFiSettings(data: WifiSettings) {
const result = await api.post_proto<Response>('/api/wifi/sta/settings', Request.create({ wifiSettings: data }))
const result = await api.post_proto<ProtoResponse>('/api/wifi/sta/settings', Request.create({ wifiSettings: data }))
if (result.isErr()) {
console.error(`Error occurred while fetching: `, result.inner)
notifications.error('User not authorized.', 3000)
@@ -330,7 +337,7 @@
<StatusItem
icon={Home}
title="IP Address"
description={uint32ToIp(wifiStatus.local_ip)}
description={uint32ToIp(wifiStatus.localIp)}
/>
<StatusItem icon={WiFi} title="RSSI" description={`${wifiStatus.rssi} dBm`}>
@@ -361,7 +368,7 @@
<StatusItem
icon={MAC}
title="MAC Address"
description={wifiStatus.mac_address}
description={wifiStatus.macAddress}
/>
<StatusItem
@@ -373,19 +380,19 @@
<StatusItem
icon={Gateway}
title="Gateway IP"
description={uint32ToIp(wifiStatus.gateway_ip)}
description={uint32ToIp(wifiStatus.gatewayIp)}
/>
<StatusItem
icon={Subnet}
title="Subnet Mask"
description={uint32ToIp(wifiStatus.subnet_mask)}
description={uint32ToIp(wifiStatus.subnetMask)}
/>
<StatusItem
icon={DNS}
title="DNS"
description={uint32ToIp(wifiStatus.dns_ip_1)}
description={uint32ToIp(wifiStatus.dnsIp1)}
/>
</div>
{/if}