diff options
author | tempest <git@ashen.earth> | 2025-04-18 00:58:28 -0600 |
---|---|---|
committer | tempest <git@ashen.earth> | 2025-04-18 00:58:28 -0600 |
commit | 619373a261ad18c51cd09bc61d116f585c8295ec (patch) | |
tree | 041a80d7b57cf221497809bd3889bff1042b842c /src/components/app.rs | |
parent | b856f12cf422b96c37c12df3d7829e4d15ef4453 (diff) |
Diffstat (limited to 'src/components/app.rs')
-rw-r--r-- | src/components/app.rs | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/src/components/app.rs b/src/components/app.rs index dd2d018..2814562 100644 --- a/src/components/app.rs +++ b/src/components/app.rs @@ -13,9 +13,7 @@ use leptos_router::{ 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; +use crate::data::{Namespace, Page, PageData, PageUuid}; pub fn shell(options: LeptosOptions) -> impl IntoView { view! { @@ -69,14 +67,21 @@ struct PageParams { async fn get_namespace() -> Result<Namespace, ServerFnError> { use crate::data::StormscribeData; - Ok(StormscribeData::get_namespace()) + Ok(StormscribeData::get_namespace().await) } #[server] async fn get_pages() -> Result<HashMap<PageUuid, Page>, ServerFnError> { use crate::data::StormscribeData; - Ok(StormscribeData::get_pages()) + Ok(StormscribeData::get_all_pages().await) +} + +#[server] +async fn lookup_page(path: String) -> Result<PageData, ServerFnError> { + use crate::data::StormscribeData; + + Ok(StormscribeData::get_page_data(path).await) } // Renders a page @@ -91,24 +96,20 @@ fn PageRender() -> impl IntoView { .map(|params| params.path.clone().unwrap_or("Unknown path".to_string())) .unwrap_or("Could not read params".to_string()); - let namespace = Resource::new(move || {}, |_| get_namespace()); - let page_resource = Resource::new(move || {}, |_| get_pages()); + let page_resource = Resource::new( + move || page_path.clone(), + |page_path| async move { lookup_page(page_path).await }, + ); view! { <Suspense fallback=move || view! { <p>"Loading..."</p> } > - {move || Suspend::new(async move { - 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(), - } - })} + {move || page_resource.get() + .map(|page| view! { + <pre>{format!("{page:#?}")}</pre> + }) + } </Suspense> } .into_any() |