use crate::engine::models::TestReport;
#[cfg(unix)]
use crate::utils::format::split_bps;
pub fn fire(report: &TestReport, provider: &str) {
fire_impl(report, provider);
}
#[cfg(unix)]
fn fire_impl(report: &TestReport, provider: &str) {
let body = build_body(report, provider);
let _ = try_notify(&body);
}
#[cfg(unix)]
fn try_notify(body: &str) -> notify_rust::error::Result<()> {
notify_rust::Notification::new()
.summary("netspd — Test complete")
.body(body)
.appname("netspd")
.show()?;
Ok(())
}
#[cfg(not(unix))]
fn fire_impl(_report: &TestReport, _provider: &str) {}
#[cfg(unix)]
fn build_body(report: &TestReport, provider: &str) -> String {
let (dl, dl_unit) = split_bps(report.download.average_bps);
let (ul, ul_unit) = split_bps(report.upload.average_bps);
let ping = report.latency.average_ms;
format!("↓ {dl} {dl_unit} ↑ {ul} {ul_unit} ping {ping:.0} ms via {provider}")
}