Display the list of pending devices in the UI
This commit is contained in:
@ -81,7 +81,7 @@ impl DevicesList {
|
||||
let dev = self
|
||||
.0
|
||||
.get(id)
|
||||
.ok_or_else(|| DevicesListError::PersistFailedDeviceNotFound)?;
|
||||
.ok_or(DevicesListError::PersistFailedDeviceNotFound)?;
|
||||
|
||||
std::fs::write(
|
||||
AppConfig::get().device_config_path(id),
|
||||
@ -90,4 +90,9 @@ impl DevicesList {
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Get a copy of the full list of devices
|
||||
pub fn full_list(&self) -> Vec<Device> {
|
||||
self.0.clone().into_values().collect()
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
use crate::constants;
|
||||
use crate::devices::device::{DeviceId, DeviceInfo};
|
||||
use crate::devices::device::{Device, DeviceId, DeviceInfo};
|
||||
use crate::devices::devices_list::DevicesList;
|
||||
use crate::energy::consumption;
|
||||
use crate::energy::consumption::EnergyConsumption;
|
||||
@ -93,3 +93,16 @@ impl Handler<EnrollDevice> for EnergyActor {
|
||||
self.devices.enroll(&msg.0, &msg.1, &msg.2)
|
||||
}
|
||||
}
|
||||
|
||||
/// Get the list of devices
|
||||
#[derive(Message)]
|
||||
#[rtype(result = "Vec<Device>")]
|
||||
pub struct GetDeviceLists;
|
||||
|
||||
impl Handler<GetDeviceLists> for EnergyActor {
|
||||
type Result = Vec<Device>;
|
||||
|
||||
fn handle(&mut self, _msg: GetDeviceLists, _ctx: &mut Context<Self>) -> Self::Result {
|
||||
self.devices.full_list()
|
||||
}
|
||||
}
|
||||
|
@ -131,6 +131,14 @@ pub async fn secure_server(energy_actor: EnergyActorAddr) -> anyhow::Result<()>
|
||||
"/web_api/energy/cached_consumption",
|
||||
web::get().to(energy_controller::cached_consumption),
|
||||
)
|
||||
.route(
|
||||
"/web_api/devices/list_pending",
|
||||
web::get().to(devices_controller::list_pending),
|
||||
)
|
||||
.route(
|
||||
"/web_api/devices/list_validated",
|
||||
web::get().to(devices_controller::list_validated),
|
||||
)
|
||||
// Devices API
|
||||
.route(
|
||||
"/devices_api/utils/time",
|
||||
|
28
central_backend/src/server/web_api/devices_controller.rs
Normal file
28
central_backend/src/server/web_api/devices_controller.rs
Normal file
@ -0,0 +1,28 @@
|
||||
use crate::energy::energy_actor;
|
||||
use crate::server::custom_error::HttpResult;
|
||||
use crate::server::WebEnergyActor;
|
||||
use actix_web::HttpResponse;
|
||||
|
||||
/// Get the list of pending (not accepted yet) devices
|
||||
pub async fn list_pending(actor: WebEnergyActor) -> HttpResult {
|
||||
let list = actor
|
||||
.send(energy_actor::GetDeviceLists)
|
||||
.await?
|
||||
.into_iter()
|
||||
.filter(|d| !d.validated)
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
Ok(HttpResponse::Ok().json(list))
|
||||
}
|
||||
|
||||
/// Get the list of validated (not accepted yet) devices
|
||||
pub async fn list_validated(actor: WebEnergyActor) -> HttpResult {
|
||||
let list = actor
|
||||
.send(energy_actor::GetDeviceLists)
|
||||
.await?
|
||||
.into_iter()
|
||||
.filter(|d| d.validated)
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
Ok(HttpResponse::Ok().json(list))
|
||||
}
|
@ -1,3 +1,4 @@
|
||||
pub mod auth_controller;
|
||||
pub mod devices_controller;
|
||||
pub mod energy_controller;
|
||||
pub mod server_controller;
|
||||
|
Reference in New Issue
Block a user