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

View file

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

View file

@ -311,7 +311,7 @@ async fn start_listening(
if identity.is_some() {
NetworkType::EAP
} else {
NetworkType::PSK
NetworkType::PskOrSae
},
interface.clone(),
)
@ -490,12 +490,12 @@ async fn start_listening(
}
t => {
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"
} else {
"802-1x"
};
let pw_key = if matches!(t, NetworkType::PSK) {
let pw_key = if matches!(t, NetworkType::PskOrSae) {
"psk"
} else {
"password"