aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/pages/node.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-01-10 08:44:06 +0100
committermetamuffin <metamuffin@disroot.org>2023-01-10 08:44:06 +0100
commit0c30e065b678d41d8932b3bf0926608cfa15a7ac (patch)
tree0dd1c03c25ed49b97985d840790b108f2d4fe967 /src/frontend/pages/node.rs
parentc64d3cd8cda389909b4b3dbdf00c0710e2c9a490 (diff)
downloadjellything-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.rs46
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(&params.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" }
+ }
+}