forked from PeachCloud/peach-workspace
add ap list template and mount route
This commit is contained in:
parent
4fb4ea2f9c
commit
0814eedf13
|
@ -212,6 +212,10 @@ pub fn mount_peachpub_routes(
|
|||
routes::settings::network::configure_dns::handle_form(request)
|
||||
},
|
||||
|
||||
(GET) (/settings/network/wifi) => {
|
||||
Response::html(routes::settings::network::list_aps::build_template())
|
||||
},
|
||||
|
||||
(GET) (/settings/network/wifi/modify) => {
|
||||
Response::html(routes::settings::network::modify_ap::build_template(request, None)).reset_flash()
|
||||
},
|
||||
|
|
|
@ -1,34 +1,30 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use maud::{html, Markup, PreEscaped};
|
||||
use peach_network::{network, AccessPoint};
|
||||
use rouille::Request;
|
||||
use peach_network::{network, network::AccessPoint};
|
||||
|
||||
use crate::{
|
||||
templates,
|
||||
utils::{flash::FlashRequest, theme},
|
||||
};
|
||||
use crate::{templates, utils::theme};
|
||||
|
||||
// ROUTE: /settings/network/wifi
|
||||
|
||||
/// Retrieve network state data required by the WiFi network list template.
|
||||
fn get_network_state_data(ap: &str, wlan: &str) -> (String, String, HashMap<String, AccessPoint>) {
|
||||
let ap_state = match network::state("ap0") {
|
||||
let ap_state = match network::state(ap) {
|
||||
Ok(Some(state)) => state,
|
||||
Err(_) => "Interface unavailable".to_string(),
|
||||
_ => "Interface unavailable".to_string(),
|
||||
};
|
||||
|
||||
let wlan_ssid = match network::ssid("wlan0") {
|
||||
let wlan_ssid = match network::ssid(wlan) {
|
||||
Ok(Some(ssid)) => ssid,
|
||||
Err(_) => "Not connected".to_string(),
|
||||
_ => "Not connected".to_string(),
|
||||
};
|
||||
|
||||
let wlan_networks = match network::all_networks("wlan0") {
|
||||
let network_list = match network::all_networks(wlan) {
|
||||
Ok(networks) => networks,
|
||||
Err(_) => HashMap::new(),
|
||||
};
|
||||
|
||||
(ap_state, wlan_ssid, wlan_networks)
|
||||
(ap_state, wlan_ssid, network_list)
|
||||
}
|
||||
|
||||
fn render_network_connected_elements(ssid: String) -> Markup {
|
||||
|
@ -68,10 +64,10 @@ fn render_network_unavailable_elements(ssid: String, ap_state: String) -> Markup
|
|||
}
|
||||
|
||||
/// WiFi network list template builder.
|
||||
pub fn build_template(request: &Request) -> PreEscaped<String> {
|
||||
let (ap_state, wlan_ssid, wlan_networks) = get_network_state_data("ap0", "wlan0");
|
||||
pub fn build_template() -> PreEscaped<String> {
|
||||
let (ap_state, wlan_ssid, network_list) = get_network_state_data("ap0", "wlan0");
|
||||
|
||||
html! {
|
||||
let list_template = html! {
|
||||
div class="card center" {
|
||||
div class="center list-container" {
|
||||
ul class="list" {
|
||||
|
@ -79,8 +75,12 @@ pub fn build_template(request: &Request) -> PreEscaped<String> {
|
|||
li class="list-item light-bg warning-border" {
|
||||
"Enable WiFi client mode to view saved and available networks."
|
||||
}
|
||||
} @else if wlan_networks {
|
||||
@for (ssid, ap) in wlan_networks {
|
||||
} @else if network_list.is_empty() {
|
||||
li class="list-item light-bg" {
|
||||
"No saved or available networks found."
|
||||
}
|
||||
} @else {
|
||||
@for (ssid, ap) in network_list {
|
||||
li {
|
||||
@if ssid == wlan_ssid {
|
||||
(render_network_connected_elements(ssid))
|
||||
|
@ -91,13 +91,17 @@ pub fn build_template(request: &Request) -> PreEscaped<String> {
|
|||
}
|
||||
}
|
||||
}
|
||||
} @else {
|
||||
li class="list-item light-bg" {
|
||||
"No saved or available networks found."
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
let body =
|
||||
templates::nav::build_template(list_template, "WiFi Networks", Some("/settings/network"));
|
||||
|
||||
let theme = theme::get_theme();
|
||||
|
||||
templates::base::build_template(body, theme)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue