diff --git a/web/src/components/activity.rs b/web/src/components/activity.rs
index bccf1f84..d38ced93 100644
--- a/web/src/components/activity.rs
+++ b/web/src/components/activity.rs
@@ -43,7 +43,9 @@ pub fn Item(
match item.object_type() {
// special case for placeholder activities
Some(apb::ObjectType::Note) | Some(apb::ObjectType::Document(_)) => (move || {
- if config.get().filters.orphans {
+ if !config.get().filters.replies && item.in_reply_to().id().is_some() {
+ None
+ } else if config.get().filters.orphans {
Some(view! { {sep.clone()} })
} else {
None
@@ -53,27 +55,31 @@ pub fn Item(
Some(apb::ObjectType::Activity(t)) => (move || {
if config.get().filters.visible(apb::ObjectType::Activity(t)) {
let object_id = item.object().id().unwrap_or_default();
- let object = match t {
- apb::ActivityType::Create | apb::ActivityType::Announce =>
- CACHE.get(&object_id).map(|obj| {
- view! { }
- }.into_view()),
- apb::ActivityType::Follow =>
- CACHE.get(&object_id).map(|obj| {
- view! {
-
- }
- }.into_view()),
- _ => None,
- };
- Some(view! {
-
- {object}
- {sep.clone()}
- })
+ if !config.get().filters.replies && CACHE.get(&object_id).map(|x| x.in_reply_to().id().is_some()).unwrap_or(false) {
+ None
+ } else {
+ let object = match t {
+ apb::ActivityType::Create | apb::ActivityType::Announce =>
+ CACHE.get(&object_id).map(|obj| {
+ view! { }
+ }.into_view()),
+ apb::ActivityType::Follow =>
+ CACHE.get(&object_id).map(|obj| {
+ view! {
+
+ }
+ }.into_view()),
+ _ => None,
+ };
+ Some(view! {
+
+ {object}
+ {sep.clone()}
+ })
+ }
} else {
None
}
diff --git a/web/src/config.rs b/web/src/config.rs
index 1fcb389c..68cf97ac 100644
--- a/web/src/config.rs
+++ b/web/src/config.rs
@@ -21,6 +21,9 @@ pub struct Config {
#[serde_inline_default::serde_inline_default]
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize, serde_default::DefaultFromSerde)]
pub struct FiltersConfig {
+ #[serde_inline_default(false)]
+ pub replies: bool,
+
#[serde_inline_default(false)]
pub likes: bool,
diff --git a/web/src/page/config.rs b/web/src/page/config.rs
index f7abfb29..20ffb0a3 100644
--- a/web/src/page/config.rs
+++ b/web/src/page/config.rs
@@ -85,6 +85,7 @@ pub fn ConfigPage(setter: WriteSignal) -> impl IntoView {
filters