From cb2f613f9f7b462b643f55109065ec91d4ca424f Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Fri, 17 Feb 2023 18:35:28 +1300 Subject: [PATCH] Hide posts with content warnings until approved --- src/ui/feed/mod.rs | 15 ++++++++++++++- src/ui/mod.rs | 2 ++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/ui/feed/mod.rs b/src/ui/feed/mod.rs index e42eb812..52a07aaa 100644 --- a/src/ui/feed/mod.rs +++ b/src/ui/feed/mod.rs @@ -310,7 +310,7 @@ fn render_post_actual( } if person.muted > 0 { - ui.label("MUTED POST"); + ui.label(RichText::new("MUTED POST").monospace().italics()); } else { render_post_inner(app, ctx, ui, event, person, is_main_event, as_reply_to); } @@ -479,6 +479,19 @@ fn render_post_inner( ui.label(serde_json::to_string_pretty(&event).unwrap()); } else if app.render_qr == Some(event.id) { app.render_qr(ui, ctx, "feedqr", event.content.trim()); + } else if event.content_warning().is_some() && !app.approved.contains(&event.id) { + ui.label( + RichText::new(format!( + "Content-Warning: {}", + event.content_warning().unwrap() + )) + .monospace() + .italics(), + ); + if ui.button("Show Post").clicked() { + app.approved.insert(event.id); + app.height.remove(&event.id); // will need to be recalculated. + } } else if event.kind == EventKind::Repost { if let Ok(inner_event) = serde_json::from_str::(&event.content) { let inner_person = match GLOBALS.people.get(&inner_event.pubkey.into()) { diff --git a/src/ui/mod.rs b/src/ui/mod.rs index 958ca4d6..b2a1bbe3 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -91,6 +91,7 @@ struct GossipUi { render_raw: Option, render_qr: Option, viewed: HashSet, + approved: HashSet, // content warning posts height: HashMap, // Person page rendering ('npub', 'nprofile', or 'lud06') @@ -238,6 +239,7 @@ impl GossipUi { render_raw: None, render_qr: None, viewed: HashSet::new(), + approved: HashSet::new(), height: HashMap::new(), person_qr: None, setting_active_person: false,