diff --git a/web/src/view/mod.rs b/web/src/view/mod.rs index a34a5b0..cb18340 100644 --- a/web/src/view/mod.rs +++ b/web/src/view/mod.rs @@ -7,6 +7,7 @@ use chrono::{DateTime, Datelike, Duration, Local, Utc}; use itertools::Itertools; use log::{error, info}; use seed::{prelude::*, *}; +use seed_hooks::{state_access::CloneState, topo, use_state}; use wasm_timer::Instant; use crate::{ @@ -292,7 +293,7 @@ fn thread(thread: &ShowThreadQueryThread) -> Node { }, ) => div![ raw_text_message(&contents), - pre![C!["content-tree"], content_tree] + view_content_tree(&content_tree), ], ShowThreadQueryThreadMessagesBody::Html( ShowThreadQueryThreadMessagesBodyOnHtml { @@ -311,7 +312,7 @@ fn thread(thread: &ShowThreadQueryThread) -> Node { .iter() .map(|a| div!["Filename: ", &a.filename, " ", &a.content_type]) ]), - pre![C!["content-tree"], content_tree] + view_content_tree(&content_tree), ], } ], @@ -330,6 +331,30 @@ fn thread(thread: &ShowThreadQueryThread) -> Node { ] } +#[topo::nested] +fn view_content_tree(content_tree: &str) -> Node { + let debug_open = use_state(|| false); + div![ + hr![], + small![ + i![C![ + "fa-solid", + if debug_open.get() { + "fa-angle-up" + } else { + "fa-angle-down" + } + ]], + " Debug", + ev(Ev::Click, move |_| { + debug_open.set(!debug_open.get()); + }) + ], + IF!(debug_open.get() => + pre![C!["content-tree"], content_tree]), + ] +} + fn view_header(query: &str, refresh_request: &RefreshingState) -> Node { let is_loading = refresh_request == &RefreshingState::Loading; let is_error = if let RefreshingState::Error(err) = refresh_request {