summary refs log tree commit diff
path: root/src/components/app.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/app.rs')
-rw-r--r--src/components/app.rs51
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 />
     }
 }