//! Realm detail/edit page component.
use leptos::prelude::*;
#[cfg(feature = "hydrate")]
use leptos::task::spawn_local;
use leptos_router::hooks::use_params_map;
use crate::components::{
Card, DetailGrid, DetailItem, MessageAlert, NsfwBadge, PageHeader, PrivacyBadge,
};
use crate::hooks::use_fetch_if;
use crate::models::RealmDetail;
use crate::utils::get_api_base;
/// Realm detail page component.
#[component]
pub fn RealmDetailPage() -> impl IntoView {
let params = use_params_map();
let slug = move || params.get().get("slug").unwrap_or_default();
let initial_slug = params.get_untracked().get("slug").unwrap_or_default();
let (message, set_message) = signal(Option::<(String, bool)>::None);
let realm = use_fetch_if::(
move || !slug().is_empty(),
move || format!("{}/realms/{}", get_api_base(), slug()),
);
let slug_for_scenes = initial_slug.clone();
view! {
"Manage Scenes"
"Back to Realms"
"Loading realm..."
}>
{move || {
realm.get().map(|maybe_realm| {
match maybe_realm {
Some(r) => view! {
}.into_any(),
None => view! {
"Realm not found or you don't have permission to view."
}.into_any()
}
})
}}
}
}
#[component]
#[allow(unused_variables)]
fn RealmDetailView(
realm: RealmDetail,
message: ReadSignal