fix(network): show missing WPA3-only networks

This commit is contained in:
Lukas 2026-02-12 19:56:21 +01:00 • committed by GitHub
parent 1139e34928
commit f5f6d3e8f0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 11 additions and 11 deletions

View file

@ -447,7 +447,7 @@ impl Page {
let escaped_ssid = escape_wifi_qr_string(ssid.as_ref()); let escaped_ssid = escape_wifi_qr_string(ssid.as_ref());
let qr_string = if let Some(ref pass) = password { let qr_string = if let Some(ref pass) = password {
let security = match security_type { let security = match security_type {
NetworkType::PSK => "WPA", NetworkType::PskOrSae => "WPA",
NetworkType::EAP => "WPA", NetworkType::EAP => "WPA",
NetworkType::Open => "", NetworkType::Open => "",
}; };
@ -921,7 +921,7 @@ fn devices_view() -> Section<crate::pages::Message> {
})) }))
.any(|known| known == network.ssid.as_ref()); .any(|known| known == network.ssid.as_ref());
let is_encrypted = network.network_type != NetworkType::Open; let needs_password = network.network_type != NetworkType::Open;
let (connect_txt, connect_msg) = if is_connected { let (connect_txt, connect_msg) = if is_connected {
(&section.descriptions[connected_txt], None) (&section.descriptions[connected_txt], None)
@ -930,7 +930,7 @@ fn devices_view() -> Section<crate::pages::Message> {
} else { } else {
( (
&section.descriptions[connect_txt], &section.descriptions[connect_txt],
Some(if is_known || !is_encrypted { Some(if is_known || !needs_password {
Message::Connect(network.ssid.clone()) Message::Connect(network.ssid.clone())
} else { } else {
Message::PasswordRequest(network.ssid.clone()) Message::PasswordRequest(network.ssid.clone())
@ -941,7 +941,7 @@ fn devices_view() -> Section<crate::pages::Message> {
let identifier = widget::row::with_capacity(3) let identifier = widget::row::with_capacity(3)
.push(widget::icon::from_name(wifi_icon(network.strength))) .push(widget::icon::from_name(wifi_icon(network.strength)))
.push_maybe( .push_maybe(
is_encrypted needs_password
.then(|| widget::icon::from_name("connection-secure-symbolic")), .then(|| widget::icon::from_name("connection-secure-symbolic")),
) )
.push( .push(

View file

@ -56,9 +56,9 @@ pub async fn handle_wireless_device(
}; };
let network_type = if flags.intersects(ApSecurityFlags::KEY_MGMT_802_1X) { let network_type = if flags.intersects(ApSecurityFlags::KEY_MGMT_802_1X) {
NetworkType::EAP NetworkType::EAP
} else if flags.intersects(ApSecurityFlags::KEY_MGMTPSK) { } else if flags.intersects(ApSecurityFlags::KEY_MGMTPSK | ApSecurityFlags::KEY_MGMT_SAE) {
NetworkType::PSK NetworkType::PskOrSae
} else if flags.is_empty() { } else if flags.intersects(ApSecurityFlags::KEY_MGMT_OWE) || flags.is_empty() {
NetworkType::Open NetworkType::Open
} else { } else {
continue; continue;
@ -111,6 +111,6 @@ pub struct AccessPoint {
#[derive(Debug, Clone, Copy, PartialEq, Eq)] #[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum NetworkType { pub enum NetworkType {
Open, Open,
PSK, PskOrSae,
EAP, EAP,
} }

View file

@ -311,7 +311,7 @@ async fn start_listening(
if identity.is_some() { if identity.is_some() {
NetworkType::EAP NetworkType::EAP
} else { } else {
NetworkType::PSK NetworkType::PskOrSae
}, },
interface.clone(), interface.clone(),
) )
@ -490,12 +490,12 @@ async fn start_listening(
} }
t => { t => {
let (tx, rx) = tokio::sync::oneshot::channel(); let (tx, rx) = tokio::sync::oneshot::channel();
let setting_name = if matches!(t, NetworkType::PSK) { let setting_name = if matches!(t, NetworkType::PskOrSae) {
"802-11-wireless-security" "802-11-wireless-security"
} else { } else {
"802-1x" "802-1x"
}; };
let pw_key = if matches!(t, NetworkType::PSK) { let pw_key = if matches!(t, NetworkType::PskOrSae) {
"psk" "psk"
} else { } else {
"password" "password"