From 6597d61905c8431f84ff70aee220243a3ecf272c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asger=20Juul=20Brunsh=C3=B8j?= Date: Thu, 6 Feb 2025 21:34:30 +0100 Subject: [PATCH] wip --- crates/ascend/src/app.rs | 42 +++++++++++++++------------ crates/ascend/src/server.rs | 1 + crates/ascend/src/server_functions.rs | 9 ++++-- 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/crates/ascend/src/app.rs b/crates/ascend/src/app.rs index 4e33b71..b5d0f2f 100644 --- a/crates/ascend/src/app.rs +++ b/crates/ascend/src/app.rs @@ -1,3 +1,4 @@ +use crate::codec::ron::Ron; use crate::pages; use leptos::prelude::*; use leptos_router::components::*; @@ -55,29 +56,34 @@ pub fn Home() -> impl leptos::IntoView { tracing::debug!("Rendering home component"); - let action = Action::new(|()| async move { - tracing::debug!("running action"); - let walls = crate::server_functions::get_walls() - .await - .inspect_err(|e| { - dbg!(e); - }) - .expect("failed to get walls") - .into_inner(); - let wall = walls.first(); + // dbg!(leptos::prelude::Owner::current().map(|o| o.ancestry())); - if let Some(wall) = wall { + let wall_uid = OnceResource::<_, Ron>::new_with_options( + async move { + // dbg!(leptos::prelude::Owner::current().map(|o| o.ancestry())); + let walls = crate::server_functions::get_walls() + .await + .inspect_err(|e| { + dbg!(e); + }) + .expect("failed to get walls") + .into_inner(); + walls.first().map(|wall| wall.uid) + }, + false, + ); + + Effect::new(move || { + tracing::debug!("running effect"); + + if let Some(wall_uid) = wall_uid.get().flatten() { + tracing::debug!("navigating"); let navigate = leptos_router::hooks::use_navigate(); - let url = format!("/wall/{}", wall.uid); + let url = format!("/wall/{}", wall_uid); navigate(&url, Default::default()); + tracing::debug!("navigated"); } }); - tracing::debug!("dispatching action..."); - - action.dispatch(()); - - tracing::debug!("dispatched action"); - leptos::view! {} } diff --git a/crates/ascend/src/server.rs b/crates/ascend/src/server.rs index a870fab..81d4bae 100644 --- a/crates/ascend/src/server.rs +++ b/crates/ascend/src/server.rs @@ -63,6 +63,7 @@ async fn serve(cli: Cli) -> Result<(), Error> { let leptos_options = leptos_conf_file.leptos_options; let addr = leptos_options.site_addr; let routes = generate_route_list(App); + dbg!(&routes); let config = load_config(cli)?; diff --git a/crates/ascend/src/server_functions.rs b/crates/ascend/src/server_functions.rs index 62275f2..83d9cec 100644 --- a/crates/ascend/src/server_functions.rs +++ b/crates/ascend/src/server_functions.rs @@ -4,19 +4,20 @@ use crate::models; use leptos::prelude::expect_context; use leptos::server; use server_fn::ServerFnError; -use server_fn::error::ServerFnErrorErr; #[server( input = Ron, output = Ron, custom = RonEncoded )] -#[tracing::instrument(skip_all, err(Debug))] -pub(crate) async fn get_walls() -> Result>, ServerFnError> { +// #[tracing::instrument(skip_all, err(Debug))] +pub async fn get_walls() -> Result>, ServerFnError> { use crate::server::db::Database; use redb::ReadableTable; tracing::debug!("Enter"); + // dbg!(leptos::prelude::Owner::current().map(|o| o.ancestry())); + let db = expect_context::(); let walls = db @@ -27,6 +28,8 @@ pub(crate) async fn get_walls() -> Result>, ServerF }) .await?; + tracing::debug!("Exit"); + Ok(RonEncoded::new(walls)) }