diff options
Diffstat (limited to 'src/components/app.rs')
-rw-r--r-- | src/components/app.rs | 51 |
1 files changed, 44 insertions, 7 deletions
diff --git a/src/components/app.rs b/src/components/app.rs index d93a870..5033359 100644 --- a/src/components/app.rs +++ b/src/components/app.rs @@ -1,10 +1,16 @@ use leptos::prelude::*; +use leptos::Params; +use leptos_router::hooks::use_params; +use leptos_router::hooks::use_query; +use leptos_router::params::Params; use leptos_meta::{provide_meta_context, MetaTags, Stylesheet, Title}; use leptos_router::{ - components::{ParentRoute, Route, Router, Routes}, path, StaticSegment + components::{ParentRoute, Route, Router, Routes}, path }; use crate::components::layout::Layout; +use super::renderer::WikiPage; +use super::editor::WikiEditor; pub fn shell(options: LeptosOptions) -> impl IntoView { view! { @@ -32,7 +38,7 @@ pub fn App() -> impl IntoView { view! { // injects a stylesheet into the document <head> // id=leptos means cargo-leptos will hot-reload this stylesheet - <Stylesheet id="leptos" href="/pkg/stormscribe.css"/> + <Stylesheet id="leptos" href="/_/stormscribe.css"/> // sets the document title <Title text="Welcome to Leptos"/> @@ -41,18 +47,49 @@ pub fn App() -> impl IntoView { <Router> <Routes fallback=|| "Page not found.".into_view()> <ParentRoute path=path!("/") view=Layout> - <Route path=path!("/") view=HomePage/> + <Route path=path!("/~/*path") view=PageRender/> + <Route path=path!("/edit/*path") view=PageEdit/> </ParentRoute> </Routes> </Router> } } -/// Renders the home page of your application. +#[derive(Params, PartialEq)] +struct PageParams { + path: Option<String> +} + +// Renders a page +#[component] +fn PageRender() -> impl IntoView { + let params = use_params::<PageParams>(); + + let page_path = params.read() + .as_ref() + .ok() + .map(|params| params.path.clone() + .unwrap_or("Unknown path".to_string())) + .unwrap_or("Could not read params".to_string()); + + view! { + <WikiPage url_path=page_path /> + }.into_any() +} + +// Renders a page #[component] -fn HomePage() -> impl IntoView { +fn PageEdit() -> impl IntoView { + let params = use_params::<PageParams>(); + + let page_path = params.read() + .as_ref() + .ok() + .map(|params| params.path.clone() + .unwrap_or("Unknown path".to_string())) + .unwrap_or("Could not read params".to_string()); + view! { - <h1>Article</h1> - <p>Article content here we guess?</p> + <WikiEditor url_path=page_path /> } } |