#[derive(Template)]
#[template(path = "calls.html")]
struct CallsTemplate<'a> {
flash: &'a Option,
call_records: &'a Vec,
number_map: &'a HashMap,
}
async fn show_call_list(mut req: tide::Request<()>) -> tide::Result {
let flash: Option = req.session().get("flash");
req.session_mut().remove("flash");
let number_map = load_number_map()?;
let records = load_call_records()?;
let mut rdr = ReaderBuilder::new()
.has_headers(false)
.from_reader(records.as_bytes());
let mut records: Vec = rdr.deserialize().filter_map(Result::ok).collect();
records.sort_by(CallRecord::compare_by_start);
let hello = CallsTemplate {
flash: &flash,
call_records: &records,
number_map: &number_map,
};
let response = Response::builder(200)
.body(hello.render().expect("render"))
.header("x-custom-header", "value")
.content_type(tide::http::mime::HTML)
.build();
Ok(response)
}