/ apps / microtop / src / selectors.rs
selectors.rs
 1  use crate::app::{App, NetworkScanLoadState};
 2  
 3  pub fn access_point_ip_text(app: &App) -> String {
 4      app.wireless_status
 5          .as_ref()
 6          .map(|wireless_status| wireless_status.ap_ipv4.clone())
 7          .unwrap_or_else(|| "0.0.0.0".to_owned())
 8  }
 9  
10  pub fn network_scan_status_text(app: &App) -> String {
11      match &app.network_scan_load_state {
12          NetworkScanLoadState::Idle => "Idle".to_owned(),
13          NetworkScanLoadState::Loading => "Scanning...".to_owned(),
14          NetworkScanLoadState::Loaded => format!("Found {} network(s)", app.wireless_networks.len()),
15          NetworkScanLoadState::Error(error_message) => format!("Error: {error_message}"),
16      }
17  }
18  
19  pub fn connected_network_identity(app: &App) -> (Option<String>, String) {
20      let connected_ssid = app
21          .wireless_status
22          .as_ref()
23          .filter(|wireless_status| wireless_status.connected)
24          .map(|wireless_status| wireless_status.sta_ssid.clone());
25  
26      let connected_station_ip = app
27          .wireless_status
28          .as_ref()
29          .filter(|wireless_status| wireless_status.connected)
30          .map(|wireless_status| wireless_status.sta_ipv4.clone())
31          .unwrap_or_default();
32  
33      (connected_ssid, connected_station_ip)
34  }