@@ -24,39 +24,46 @@ use jacquard::{
2424use std:: sync:: Arc ;
2525use weaver_api:: sh_weaver:: notebook:: { BookEntryView , EntryView , entry} ;
2626
27- #[ component]
28- pub fn EntryPage (
29- ident : ReadSignal < AtIdentifier < ' static > > ,
30- book_title : ReadSignal < SmolStr > ,
31- title : ReadSignal < SmolStr > ,
32- ) -> Element {
33- tracing:: debug!(
34- "EntryPage component rendering for ident: {:?}, book: {}, title: {}" ,
35- ident( ) ,
36- book_title( ) ,
37- title( )
38- ) ;
39- rsx ! {
40- { std:: iter:: once( rsx! { Entry { ident, book_title, title} } ) }
41- }
42- }
27+ // #[component]
28+ // pub fn EntryPage(
29+ // ident: ReadSignal<AtIdentifier<'static>>,
30+ // book_title: ReadSignal<SmolStr>,
31+ // title: ReadSignal<SmolStr>,
32+ // ) -> Element {
33+ // rsx! {
34+ // {std::iter::once(rsx! {Entry {ident, book_title, title}})}
35+ // }
36+ // }
4337
4438#[ component]
45- pub fn Entry (
39+ pub fn EntryPage (
4640 ident : ReadSignal < AtIdentifier < ' static > > ,
4741 book_title : ReadSignal < SmolStr > ,
4842 title : ReadSignal < SmolStr > ,
4943) -> Element {
50- tracing:: debug!(
51- "Entry component rendering for ident: {:?}, book: {}, title: {}" ,
52- ident( ) ,
53- book_title( ) ,
54- title( )
55- ) ;
5644 // Use feature-gated hook for SSR support
57- let entry = crate :: data:: use_entry_data ( ident, book_title, title) ;
45+ let ( entry_res, entry) = crate :: data:: use_entry_data ( ident, book_title, title) ;
46+ let route = use_route :: < Route > ( ) ;
47+ let mut last_route = use_signal ( || route. clone ( ) ) ;
48+
49+ #[ cfg( all(
50+ target_family = "wasm" ,
51+ target_os = "unknown" ,
52+ not( feature = "fullstack-server" )
53+ ) ) ]
5854 let fetcher = use_context :: < crate :: fetch:: Fetcher > ( ) ;
59- tracing:: debug!( "Entry component got entry data" ) ;
55+
56+ // Suspend SSR until entry loads
57+ #[ cfg( feature = "fullstack-server" ) ]
58+ let mut entry_res = entry_res?;
59+
60+ #[ cfg( feature = "fullstack-server" ) ]
61+ use_effect ( use_reactive ! ( |route| {
62+ if route != last_route( ) {
63+ entry_res. restart( ) ;
64+ last_route. set( route. clone( ) ) ;
65+ }
66+ } ) ) ;
6067
6168 // Handle blob caching when entry data is available
6269 match & * entry. read ( ) {
0 commit comments