From 0c30e065b678d41d8932b3bf0926608cfa15a7ac Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 10 Jan 2023 08:44:06 +0100 Subject: first listing --- src/frontend/pages/node.rs | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/frontend/pages/node.rs (limited to 'src/frontend/pages/node.rs') diff --git a/src/frontend/pages/node.rs b/src/frontend/pages/node.rs new file mode 100644 index 0000000..c3f7791 --- /dev/null +++ b/src/frontend/pages/node.rs @@ -0,0 +1,46 @@ +use super::layout::Layout; +use crate::{ + frontend::pages::{HtmlTemplate, MyError, MyResult}, + library::{LibDirectory, LibItem, LibNode}, + AppState, +}; +use actix_web::{get, web, Responder}; +use actix_web_lab::respond::Html; +use log::debug; +use markup::Render; +use std::{ops::Deref, sync::Arc}; + +#[get("/library/{path:.*}")] +pub async fn page_library_node( + state: web::Data, + params: web::Path<(String,)>, +) -> MyResult { + debug!("request: {:?}", params.0); + let node = state.library.nested(¶ms.0)?; + let mut out = String::new(); + match node.deref() { + LibNode::Directory(dir) => Layout { + title: format!( + "{} - Library", + dir.path.file_name().unwrap().to_str().unwrap() + ), + main: Directory { dir: dir.clone() }, + } + .render(&mut out)?, + LibNode::Item(item) => Layout { + title: "".to_string(), + main: Item { item: item.clone() }, + } + .render(&mut out)?, + }; + Ok(Html(out)) +} + +markup::define! { + Directory(dir: Arc) { + h1 { @dir.data.name } + } + Item(item: Arc) { + h1 { "thats an item" } + } +} -- cgit v1.2.3-70-g09d2