use std::collections::HashMap;
use leptos::prelude::*;
use leptos::Params;
use leptos_meta::{provide_meta_context, MetaTags, Stylesheet, Title};
use leptos_router::hooks::use_params;
use leptos_router::params::Params;
use leptos_router::{
components::{ParentRoute, Route, Router, Routes},
path,
};
use super::editor::WikiEditor;
use super::renderer::WikiPage;
use crate::components::layout::Layout;
use crate::data::{Namespace, Page, PageData, PageUuid};
pub fn shell(options: LeptosOptions) -> impl IntoView {
view! {
}
}
#[component]
pub fn App() -> impl IntoView {
// Provides context that manages stylesheets, titles, meta tags, etc.
provide_meta_context();
view! {
// injects a stylesheet into the document
// id=leptos means cargo-leptos will hot-reload this stylesheet
// sets the document title
// content for this welcome page
}
}
#[derive(Params, PartialEq)]
struct PageParams {
path: Option,
}
#[server]
async fn get_namespace() -> Result {
use crate::data::StormscribeData;
Ok(StormscribeData::get_namespace().await)
}
#[server]
async fn get_pages() -> Result, ServerFnError> {
use crate::data::StormscribeData;
Ok(StormscribeData::get_all_pages().await)
}
#[server]
async fn lookup_page(path: String) -> Result {
use crate::data::StormscribeData;
Ok(StormscribeData::get_page_data(path).await)
}
// Renders a page
#[component]
fn PageRender() -> impl IntoView {
let params = use_params::();
let page_path = params
.read()
.as_ref()
.ok()
.map(|params| params.path.clone().unwrap_or("Unknown path".to_string()))
.unwrap_or("Could not read params".to_string());
let page_resource = Resource::new(
move || page_path.clone(),
|page_path| async move { lookup_page(page_path).await },
);
view! {
"Loading..." }
>
{move || page_resource.get()
.map(|page| view! {
{format!("{page:#?}")}
})
}
}
.into_any()
}
// Renders a page
#[component]
fn PageEdit() -> impl IntoView {
let params = use_params::();
let page_path = params
.read()
.as_ref()
.ok()
.map(|params| params.path.clone().unwrap_or("Unknown path".to_string()))
.unwrap_or("Could not read params".to_string());
view! {
}
}