diff --git a/gui/public/i18n/en/translation.ftl b/gui/public/i18n/en/translation.ftl index ce4026ce68..802e4e9732 100644 --- a/gui/public/i18n/en/translation.ftl +++ b/gui/public/i18n/en/translation.ftl @@ -577,6 +577,9 @@ onboarding-wifi_creds-submit = Submit! onboarding-wifi_creds-ssid = .label = Wi-Fi name .placeholder = Enter Wi-Fi name +onboarding-wifi_creds-ssidSelect = + .placeholder = Select your Wi-Fi network +onboarding-wifi_creds-ssidSelect-label = Wi-Fi network onboarding-wifi_creds-password = .label = Password .placeholder = Enter password diff --git a/gui/src-tauri/capabilities/migrated.json b/gui/src-tauri/capabilities/migrated.json index 834fa4b619..ce6c1aa163 100644 --- a/gui/src-tauri/capabilities/migrated.json +++ b/gui/src-tauri/capabilities/migrated.json @@ -28,6 +28,56 @@ "store:allow-get", "store:allow-set", "store:allow-save", - "fs:allow-write-text-file" + "fs:allow-write-text-file", + { + "identifier": "shell:allow-execute", + "allow": [ + { + "name": "netsh-list", + "cmd": "netsh", + "args": [ + "wlan", + "show", + "profile" + ], + "sidecar": false + }, + { + "name": "netsh-scan", + "cmd": "netsh", + "args": [ + "wlan", + "show", + "network", + "mode=Bssid" + ], + "sidecar": false + }, + { + "name": "netsh-details", + "cmd": "netsh", + "args": [ + "wlan", + "show", + "profile", + { + "validator": "name=\\S+" + }, + "key=clear" + ], + "sidecar": false + }, + { + "name": "netsh-connected", + "cmd": "netsh", + "args": [ + "wlan", + "show", + "interfaces" + ], + "sidecar": false + } + ] + } ] } diff --git a/gui/src/components/onboarding/pages/WifiCreds.tsx b/gui/src/components/onboarding/pages/WifiCreds.tsx index b865d0fba1..bec50a8aff 100644 --- a/gui/src/components/onboarding/pages/WifiCreds.tsx +++ b/gui/src/components/onboarding/pages/WifiCreds.tsx @@ -1,8 +1,10 @@ +import { useMemo } from 'react'; import { Localized, useLocalization } from '@fluent/react'; import { useOnboarding } from '@/hooks/onboarding'; import { useWifiForm } from '@/hooks/wifi-form'; import { Button } from '@/components/commons/Button'; import { Input } from '@/components/commons/Input'; +import { Dropdown } from '@/components/commons/Dropdown'; import { Typography } from '@/components/commons/Typography'; import classNames from 'classnames'; import { useTrackers } from '@/hooks/tracker'; @@ -11,7 +13,14 @@ import { useBnoExists } from '@/hooks/imu-logic'; export function WifiCredsPage() { const { l10n } = useLocalization(); const { applyProgress, state } = useOnboarding(); - const { control, handleSubmit, submitWifiCreds, formState } = useWifiForm(); + const { + control, + handleSubmit, + submitWifiCreds, + formState, + wifiNetworks, + watch, + } = useWifiForm(); const { useConnectedIMUTrackers } = useTrackers(); const connectedIMUTrackers = useConnectedIMUTrackers(); @@ -19,6 +28,15 @@ export function WifiCredsPage() { const bnoExists = useBnoExists(connectedIMUTrackers); + const wifiNetworksDropdownItems = useMemo(() => { + const networksMapped = wifiNetworks.map((network) => ({ + label: network.ssid, + value: network.ssid, + })); + + return [...networksMapped, { label: 'Other', value: 'other' }]; + }, [wifiNetworks]); + return (