fix: show route-specific skeleton screens in SuspenseBoundary fallback
This commit is contained in:
parent
c2f68b9c2d
commit
88cd23f74f
6284
scripts/seed_posts.sql
Normal file
6284
scripts/seed_posts.sql
Normal file
File diff suppressed because it is too large
Load Diff
@ -3,11 +3,25 @@ use dioxus::prelude::*;
|
|||||||
use crate::components::footer::Footer;
|
use crate::components::footer::Footer;
|
||||||
use crate::components::header::Header;
|
use crate::components::header::Header;
|
||||||
use crate::components::nav::use_nav_items;
|
use crate::components::nav::use_nav_items;
|
||||||
use crate::components::skeletons::home_skeleton::HomeSkeleton;
|
use crate::components::skeletons::archive_skeleton::ArchiveSkeleton;
|
||||||
use crate::components::skeletons::delayed_skeleton::DelayedSkeleton;
|
use crate::components::skeletons::delayed_skeleton::DelayedSkeleton;
|
||||||
|
use crate::components::skeletons::home_skeleton::HomeSkeleton;
|
||||||
|
use crate::components::skeletons::post_detail_skeleton::PostDetailSkeleton;
|
||||||
|
use crate::components::skeletons::search_skeleton::SearchSkeleton;
|
||||||
|
use crate::components::skeletons::tags_skeleton::TagsSkeleton;
|
||||||
use crate::router::Route;
|
use crate::router::Route;
|
||||||
use crate::theme::ThemeToggle;
|
use crate::theme::ThemeToggle;
|
||||||
|
|
||||||
|
fn route_skeleton(route: &Route) -> Element {
|
||||||
|
match route {
|
||||||
|
Route::Archives {} => rsx! { DelayedSkeleton { ArchiveSkeleton {} } },
|
||||||
|
Route::Tags {} | Route::TagDetail { .. } => rsx! { DelayedSkeleton { TagsSkeleton {} } },
|
||||||
|
Route::Search {} => rsx! { DelayedSkeleton { SearchSkeleton {} } },
|
||||||
|
Route::PostDetail { .. } => rsx! { DelayedSkeleton { PostDetailSkeleton {} } },
|
||||||
|
_ => rsx! { DelayedSkeleton { HomeSkeleton {} } },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[component]
|
#[component]
|
||||||
pub fn FrontendLayout() -> Element {
|
pub fn FrontendLayout() -> Element {
|
||||||
let route = use_route::<Route>();
|
let route = use_route::<Route>();
|
||||||
@ -18,9 +32,7 @@ pub fn FrontendLayout() -> Element {
|
|||||||
Header { nav_items, right_content: rsx! { ThemeToggle {} } }
|
Header { nav_items, right_content: rsx! { ThemeToggle {} } }
|
||||||
main { class: "flex-1 w-full max-w-3xl mx-auto px-6 py-6",
|
main { class: "flex-1 w-full max-w-3xl mx-auto px-6 py-6",
|
||||||
SuspenseBoundary {
|
SuspenseBoundary {
|
||||||
fallback: |_| rsx! {
|
fallback: move |_| route_skeleton(&route),
|
||||||
DelayedSkeleton { HomeSkeleton {} }
|
|
||||||
},
|
|
||||||
Outlet::<Route> {}
|
Outlet::<Route> {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user