forked from alemi/upub
feat(web): AP debug page to see remote objects
This commit is contained in:
parent
624492bcfb
commit
cff4c827ca
3 changed files with 39 additions and 1 deletions
|
@ -99,6 +99,8 @@ pub fn App() -> impl IntoView {
|
|||
<Route path="/web/users/:id" view=move || view! { <UserPage tl=user_tl /> } />
|
||||
<Route path="/web/objects/:id" view=move || view! { <ObjectPage tl=context_tl /> } />
|
||||
|
||||
<Route path="/web/debug" view=DebugPage />
|
||||
|
||||
<Route path="/" view=move || view! { <Redirect path="/web" /> } />
|
||||
</Routes>
|
||||
</main>
|
||||
|
|
|
@ -10,7 +10,7 @@ pub fn Navigator() -> impl IntoView {
|
|||
<a href="/web/home"><input class="w-100" type="submit" class:hidden=move || !auth.present() value="home timeline" /></a>
|
||||
<a href="/web/server"><input class="w-100" type="submit" value="server timeline" /></a>
|
||||
<a href="/web/about"><input class="w-100" type="submit" value="about" /></a>
|
||||
<a href="/web/config"><input class="w-100" type="submit" value="config" class:hidden=move|| !auth.present() /></a>
|
||||
<a href="/web/debug"><input class="w-100" type="submit" value="debug" class:hidden=move|| !auth.present() /></a>
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -196,3 +196,39 @@ pub fn TimelinePage(name: &'static str, tl: Timeline) -> impl IntoView {
|
|||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
#[component]
|
||||
pub fn DebugPage() -> impl IntoView {
|
||||
let url_ref: NodeRef<html::Input> = create_node_ref();
|
||||
let (object, set_object) = create_signal(serde_json::Value::String(
|
||||
"use this view to fetch remote AP objects and inspect their content".into())
|
||||
);
|
||||
let auth = use_context::<Auth>().expect("missing auth context");
|
||||
view! {
|
||||
<div>
|
||||
<Breadcrumb back=true>debug</Breadcrumb>
|
||||
<div class="mt-1" >
|
||||
<table class="align w-100" >
|
||||
<tr>
|
||||
<td><input class="w-100" type="text" node_ref=url_ref placeholder="AP id" /></td>
|
||||
<td>
|
||||
<input type="submit" class="w-100" value="fetch" on:click=move |_| {
|
||||
let fetch_url = url_ref.get().map(|x| x.value()).unwrap_or("".into());
|
||||
let url = format!("{URL_BASE}/dbg?id={fetch_url}");
|
||||
spawn_local(async move {
|
||||
match Http::fetch::<serde_json::Value>(&url, auth).await {
|
||||
Ok(x) => set_object.set(x),
|
||||
Err(e) => set_object.set(serde_json::Value::String(e.to_string())),
|
||||
}
|
||||
});
|
||||
} />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<pre class="ma-1" >
|
||||
{move || serde_json::to_string_pretty(&object.get()).unwrap_or("unserializable".to_string())}
|
||||
</pre>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue