mod activity; pub use activity::ActivityLine; mod object; pub use object::Object; mod user; pub use user::ActorBanner; mod timeline; pub use timeline::{TimelineFeed, TimelineReplies, Timeline}; use leptos::*; #[component] pub fn DateTime(t: Option>) -> impl IntoView { match t { Some(t) => { let pretty = t.format("%Y/%m/%d %H:%M:%S").to_string(); let rfc = t.to_rfc3339(); Some(view! { {pretty} }) }, None => None, } } #[component] pub fn PrivacyMarker(addressed: Vec) -> impl IntoView { let privacy = if addressed.iter().any(|x| x == apb::target::PUBLIC) { "🌐" } else if addressed.iter().any(|x| x.ends_with("/followers")) { "🔒" } else { "🔗" }; let audience = format!("[ {} ]", addressed.join(", ")); view! { {privacy} } }