diff options
Diffstat (limited to 'src/frontend')
-rw-r--r-- | src/frontend/pages/home.rs | 19 | ||||
-rw-r--r-- | src/frontend/pages/mod.rs | 11 | ||||
-rw-r--r-- | src/frontend/pages/node.rs | 28 |
3 files changed, 30 insertions, 28 deletions
diff --git a/src/frontend/pages/home.rs b/src/frontend/pages/home.rs index 3595c19..d76fc6e 100644 --- a/src/frontend/pages/home.rs +++ b/src/frontend/pages/home.rs @@ -1,15 +1,14 @@ -use crate::{ - frontend::pages::{layout::Layout, HtmlTemplate}, - AppState, -}; +use crate::frontend::pages::node::NodePage; +use crate::{frontend::pages::HtmlTemplate, AppState}; use rocket::{get, State}; #[get("/")] -pub async fn page_home(state: &State<AppState>) -> HtmlTemplate<impl markup::Render> { - HtmlTemplate(Layout { - title: String::from("Home"), - main: markup::new! { - h1 { "It works!" } +pub async fn page_home(state: &State<AppState>) -> HtmlTemplate<markup::DynRender> { + HtmlTemplate( + "Home".to_string(), + markup::new! { + h1 { "Welcome to Jellything" } + @NodePage { node: state.library.root.clone() } }, - }) + ) } diff --git a/src/frontend/pages/mod.rs b/src/frontend/pages/mod.rs index 46e2067..fa1133e 100644 --- a/src/frontend/pages/mod.rs +++ b/src/frontend/pages/mod.rs @@ -6,16 +6,23 @@ use rocket::{ }; use std::{fmt::Display, io::Cursor}; +use self::layout::Layout; + pub mod home; pub mod layout; pub mod node; -pub struct HtmlTemplate<T>(pub T); +pub struct HtmlTemplate<T>(pub String, pub T); impl<'r, T: Render> Responder<'r, 'static> for HtmlTemplate<T> { fn respond_to(self, _: &'r Request<'_>) -> response::Result<'static> { let mut out = String::new(); - self.0.render(&mut out).unwrap(); + Layout { + title: self.0, + main: self.1, + } + .render(&mut out) + .unwrap(); Response::build() .header(ContentType::HTML) .streamed_body(Cursor::new(out)) diff --git a/src/frontend/pages/node.rs b/src/frontend/pages/node.rs index cd0b4ec..b454793 100644 --- a/src/frontend/pages/node.rs +++ b/src/frontend/pages/node.rs @@ -15,25 +15,21 @@ pub async fn page_library_node( ) -> Result<HtmlTemplate<markup::DynRender>, MyError> { let path = path.to_str().unwrap().to_string(); let node = state.library.nested(&path)?.clone(); - Ok(HtmlTemplate(markup::new! { - @match node.deref() { - Node::Directory(dir) => { - @Layout { - title: format!("{} - Library", node.title()), - main: DirectoryPage { dir: dir.clone() }, - } - } - Node::Item(item) => { - @Layout { - title: "".to_string(), - main: ItemPage { item: item.clone() }, - } - } - } - })) + Ok(HtmlTemplate( + format!("{}", node.title()), + markup::new! { + @NodePage { node: node.clone() } + }, + )) } markup::define! { + NodePage(node: Arc<Node>) { + @match node.deref() { + Node::Directory(dir) => { @DirectoryPage { dir: dir.clone() } } + Node::Item(item) => { @ItemPage { item: item.clone() } } + } + } DirectoryCard(dir: Arc<Directory>) { span { a[href=&uri!(page_library_node(&dir.lib_path)).to_string()] { @dir.data.name } } } |