fix: respect muted phrases in reposts
This commit is contained in:
parent
6fcbb1fe00
commit
5844d23399
3 changed files with 103 additions and 100 deletions
|
@ -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)),
|
||||
|
|
|
@ -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)),
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue