fix: respect muted phrases in reposts

This commit is contained in:
trisua 2025-06-12 23:07:24 -04:00
parent 6fcbb1fe00
commit 5844d23399
3 changed files with 103 additions and 100 deletions

View file

@ -71,16 +71,12 @@ pub async fn index_request(
{
Ok(l) => match data
.0
.fill_posts_with_community(
data.0
.posts_muted_phrase_filter(&l, Some(&user.settings.muted)),
user.id,
&ignore_users,
&Some(user.clone()),
)
.fill_posts_with_community(l, user.id, &ignore_users, &Some(user.clone()))
.await
{
Ok(l) => l,
Ok(l) => data
.0
.posts_muted_phrase_filter(&l, Some(&user.settings.muted)),
Err(e) => return Html(render_error(e, &jar, &data, &Some(user)).await),
},
Err(e) => return Html(render_error(e, &jar, &data, &Some(user)).await),
@ -109,21 +105,21 @@ pub async fn popular_request(
Ok(l) => match data
.0
.fill_posts_with_community(
data.0.posts_muted_phrase_filter(
&l,
if let Some(ref ua) = user {
Some(&ua.settings.muted)
} else {
None
},
),
l,
if let Some(ref ua) = user { ua.id } else { 0 },
&ignore_users,
&user,
)
.await
{
Ok(l) => l,
Ok(l) => data.0.posts_muted_phrase_filter(
&l,
if let Some(ref ua) = user {
Some(&ua.settings.muted)
} else {
None
},
),
Err(e) => return Html(render_error(e, &jar, &data, &user).await),
},
Err(e) => return Html(render_error(e, &jar, &data, &user).await),
@ -162,16 +158,12 @@ pub async fn following_request(
{
Ok(l) => match data
.0
.fill_posts_with_community(
data.0
.posts_muted_phrase_filter(&l, Some(&user.settings.muted)),
user.id,
&ignore_users,
&Some(user.clone()),
)
.fill_posts_with_community(l, user.id, &ignore_users, &Some(user.clone()))
.await
{
Ok(l) => l,
Ok(l) => data
.0
.posts_muted_phrase_filter(&l, Some(&user.settings.muted)),
Err(e) => return Err(Html(render_error(e, &jar, &data, &Some(user)).await)),
},
Err(e) => return Err(Html(render_error(e, &jar, &data, &Some(user)).await)),
@ -202,21 +194,21 @@ pub async fn all_request(
Ok(l) => match data
.0
.fill_posts_with_community(
data.0.posts_muted_phrase_filter(
&l,
if let Some(ref ua) = user {
Some(&ua.settings.muted)
} else {
None
},
),
l,
if let Some(ref ua) = user { ua.id } else { 0 },
&ignore_users,
&user,
)
.await
{
Ok(l) => l,
Ok(l) => data.0.posts_muted_phrase_filter(
&l,
if let Some(ref ua) = user {
Some(&ua.settings.muted)
} else {
None
},
),
Err(e) => return Html(render_error(e, &jar, &data, &user).await),
},
Err(e) => return Html(render_error(e, &jar, &data, &user).await),
@ -606,16 +598,12 @@ pub async fn search_request(
{
Ok(l) => match data
.0
.fill_posts_with_community(
data.0
.posts_muted_phrase_filter(&l, Some(&user.settings.muted)),
user.id,
&ignore_users,
&Some(user.clone()),
)
.fill_posts_with_community(l, user.id, &ignore_users, &Some(user.clone()))
.await
{
Ok(l) => l,
Ok(l) => data
.0
.posts_muted_phrase_filter(&l, Some(&user.settings.muted)),
Err(_) => Vec::new(),
},
Err(e) => return Err(Html(render_error(e, &jar, &data, &Some(user)).await)),
@ -624,16 +612,12 @@ pub async fn search_request(
match data.0.get_posts_searched(12, req.page, &req.query).await {
Ok(l) => match data
.0
.fill_posts_with_community(
data.0
.posts_muted_phrase_filter(&l, Some(&user.settings.muted)),
user.id,
&ignore_users,
&Some(user.clone()),
)
.fill_posts_with_community(l, user.id, &ignore_users, &Some(user.clone()))
.await
{
Ok(l) => l,
Ok(l) => data
.0
.posts_muted_phrase_filter(&l, Some(&user.settings.muted)),
Err(_) => Vec::new(),
},
Err(e) => return Err(Html(render_error(e, &jar, &data, &Some(user)).await)),

View file

@ -245,21 +245,21 @@ pub async fn posts_request(
Ok(p) => match data
.0
.fill_posts_with_community(
data.0.posts_muted_phrase_filter(
&p,
if let Some(ref ua) = user {
Some(&ua.settings.muted)
} else {
None
},
),
p,
if let Some(ref ua) = user { ua.id } else { 0 },
&ignore_users,
&user,
)
.await
{
Ok(p) => p,
Ok(p) => data.0.posts_muted_phrase_filter(
&p,
if let Some(ref ua) = user {
Some(&ua.settings.muted)
} else {
None
},
),
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
},
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
@ -273,21 +273,21 @@ pub async fn posts_request(
Ok(p) => match data
.0
.fill_posts_with_community(
data.0.posts_muted_phrase_filter(
&p,
if let Some(ref ua) = user {
Some(&ua.settings.muted)
} else {
None
},
),
p,
if let Some(ref ua) = user { ua.id } else { 0 },
&ignore_users,
&user,
)
.await
{
Ok(p) => p,
Ok(p) => data.0.posts_muted_phrase_filter(
&p,
if let Some(ref ua) = user {
Some(&ua.settings.muted)
} else {
None
},
),
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
},
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
@ -299,21 +299,21 @@ pub async fn posts_request(
Ok(p) => match data
.0
.fill_posts_with_community(
data.0.posts_muted_phrase_filter(
&p,
if let Some(ref ua) = user {
Some(&ua.settings.muted)
} else {
None
},
),
p,
if let Some(ref ua) = user { ua.id } else { 0 },
&ignore_users,
&user,
)
.await
{
Ok(p) => Some(p),
Ok(p) => Some(data.0.posts_muted_phrase_filter(
&p,
if let Some(ref ua) = user {
Some(&ua.settings.muted)
} else {
None
},
)),
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
},
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
@ -415,21 +415,21 @@ pub async fn replies_request(
Ok(p) => match data
.0
.fill_posts_with_community(
data.0.posts_muted_phrase_filter(
&p,
if let Some(ref ua) = user {
Some(&ua.settings.muted)
} else {
None
},
),
p,
if let Some(ref ua) = user { ua.id } else { 0 },
&ignore_users,
&user,
)
.await
{
Ok(p) => p,
Ok(p) => data.0.posts_muted_phrase_filter(
&p,
if let Some(ref ua) = user {
Some(&ua.settings.muted)
} else {
None
},
),
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
},
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
@ -528,21 +528,21 @@ pub async fn media_request(
Ok(p) => match data
.0
.fill_posts_with_community(
data.0.posts_muted_phrase_filter(
&p,
if let Some(ref ua) = user {
Some(&ua.settings.muted)
} else {
None
},
),
p,
if let Some(ref ua) = user { ua.id } else { 0 },
&ignore_users,
&user,
)
.await
{
Ok(p) => p,
Ok(p) => data.0.posts_muted_phrase_filter(
&p,
if let Some(ref ua) = user {
Some(&ua.settings.muted)
} else {
None
},
),
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
},
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),

View file

@ -470,15 +470,17 @@ impl DataManager {
/// Update posts which contain a muted phrase.
pub fn posts_muted_phrase_filter(
&self,
posts: &Vec<Post>,
posts: &Vec<FullPost>,
muted: Option<&Vec<String>>,
) -> Vec<Post> {
) -> Vec<FullPost> {
// this shit is actually ass bro it has to clone
// very useless
let muted = match muted {
Some(m) => m,
None => return posts.to_owned(),
};
let mut out: Vec<Post> = Vec::new();
let mut out: Vec<FullPost> = Vec::new();
for mut post in posts.clone() {
for phrase in muted {
@ -486,10 +488,27 @@ impl DataManager {
continue;
}
if post.content.to_lowercase().contains(&phrase.to_lowercase()) {
post.context.content_warning = "Contains muted phrase".to_string();
if post
.0
.content
.to_lowercase()
.contains(&phrase.to_lowercase())
{
post.0.context.content_warning = "Contains muted phrase".to_string();
break;
}
if let Some(ref mut reposting) = post.3 {
if reposting
.1
.content
.to_lowercase()
.contains(&phrase.to_lowercase())
{
reposting.1.context.content_warning = "Contains muted phrase".to_string();
break;
}
}
}
out.push(post);