diff options
author | metamuffin <metamuffin@disroot.org> | 2023-01-10 08:44:06 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-01-10 08:44:06 +0100 |
commit | 0c30e065b678d41d8932b3bf0926608cfa15a7ac (patch) | |
tree | 0dd1c03c25ed49b97985d840790b108f2d4fe967 /src/frontend/pages/node.rs | |
parent | c64d3cd8cda389909b4b3dbdf00c0710e2c9a490 (diff) | |
download | jellything-0c30e065b678d41d8932b3bf0926608cfa15a7ac.tar jellything-0c30e065b678d41d8932b3bf0926608cfa15a7ac.tar.bz2 jellything-0c30e065b678d41d8932b3bf0926608cfa15a7ac.tar.zst |
first listing
Diffstat (limited to 'src/frontend/pages/node.rs')
-rw-r--r-- | src/frontend/pages/node.rs | 46 |
1 files changed, 46 insertions, 0 deletions
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<AppState>, + params: web::Path<(String,)>, +) -> MyResult<impl Responder> { + 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<LibDirectory>) { + h1 { @dir.data.name } + } + Item(item: Arc<LibItem>) { + h1 { "thats an item" } + } +} |