summary refs log tree commit diff
path: root/src/components/app.rs
diff options
context:
space:
mode:
authortempest <git@ashen.earth>2025-04-15 00:08:12 -0600
committertempest <git@ashen.earth>2025-04-15 00:08:12 -0600
commitb856f12cf422b96c37c12df3d7829e4d15ef4453 (patch)
tree4547df3ec3d347715292a860a5a63207fe428de3 /src/components/app.rs
parent128cc42557c8d7da46c63a40ea4469ed0eb7f26d (diff)
Can find content data
Diffstat (limited to 'src/components/app.rs')
-rw-r--r--src/components/app.rs66
1 files changed, 43 insertions, 23 deletions
diff --git a/src/components/app.rs b/src/components/app.rs
index a7ac5bd..dd2d018 100644
--- a/src/components/app.rs
+++ b/src/components/app.rs
@@ -1,16 +1,21 @@
+use std::collections::HashMap;
+
 use leptos::prelude::*;
 use leptos::Params;
+use leptos_meta::{provide_meta_context, MetaTags, Stylesheet, Title};
 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
+    components::{ParentRoute, Route, Router, Routes},
+    path,
 };
 
-use crate::components::layout::Layout;
-use super::renderer::WikiPage;
 use super::editor::WikiEditor;
+use super::renderer::WikiPage;
+use crate::components::layout::Layout;
+use crate::data::Namespace;
+use crate::data::Page;
+use crate::data::PageUuid;
 
 pub fn shell(options: LeptosOptions) -> impl IntoView {
     view! {
@@ -57,41 +62,56 @@ pub fn App() -> impl IntoView {
 
 #[derive(Params, PartialEq)]
 struct PageParams {
-    path: Option<String>
+    path: Option<String>,
+}
+
+#[server]
+async fn get_namespace() -> Result<Namespace, ServerFnError> {
+    use crate::data::StormscribeData;
+
+    Ok(StormscribeData::get_namespace())
+}
+
+#[server]
+async fn get_pages() -> Result<HashMap<PageUuid, Page>, ServerFnError> {
+    use crate::data::StormscribeData;
+
+    Ok(StormscribeData::get_pages())
 }
 
 // Renders a page
 #[component]
 fn PageRender() -> impl IntoView {
-    use crate::actions::page::get_page_content;
-
     let params = use_params::<PageParams>();
 
-    let page_path = params.read()
+    let page_path = params
+        .read()
         .as_ref()
         .ok()
-        .map(|params| params.path.clone()
-             .unwrap_or("Unknown path".to_string()))
+        .map(|params| params.path.clone().unwrap_or("Unknown path".to_string()))
         .unwrap_or("Could not read params".to_string());
 
-    let page_data = Resource::new(
-        move || page_path.clone(),
-        |page_path| get_page_content(page_path)
-    );
+    let namespace = Resource::new(move || {}, |_| get_namespace());
+    let page_resource = Resource::new(move || {}, |_| get_pages());
 
     view! {
         <Suspense
             fallback=move || view! { <p>"Loading..."</p> }
         >
             {move || Suspend::new(async move {
-                let data = page_data.await;
-                match data {
-                    Ok(_) => view! {<p>Loaded</p>}.into_any(),
-                    Err(_) => view! {<p>Error</p>}.into_any(),
+                let name_data = namespace.await;
+                let page_data = page_resource.await;
+                match (name_data, page_data) {
+                    (Ok(names), Ok(pages)) => view! {
+                        <pre>{format!("{names:#?}")}</pre>
+                        <pre>{format!("{pages:#?}")}</pre>
+                    }.into_any(),
+                    _ => view! {<p>Error</p>}.into_any(),
                 }
             })}
         </Suspense>
-    }.into_any()
+    }
+    .into_any()
 }
 
 // Renders a page
@@ -99,11 +119,11 @@ fn PageRender() -> impl IntoView {
 fn PageEdit() -> impl IntoView {
     let params = use_params::<PageParams>();
 
-    let page_path = params.read()
+    let page_path = params
+        .read()
         .as_ref()
         .ok()
-        .map(|params| params.path.clone()
-             .unwrap_or("Unknown path".to_string()))
+        .map(|params| params.path.clone().unwrap_or("Unknown path".to_string()))
         .unwrap_or("Could not read params".to_string());
 
     view! {