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
|
Ok(l) => match data
|
||||||
.0
|
.0
|
||||||
.fill_posts_with_community(
|
.fill_posts_with_community(l, user.id, &ignore_users, &Some(user.clone()))
|
||||||
data.0
|
|
||||||
.posts_muted_phrase_filter(&l, Some(&user.settings.muted)),
|
|
||||||
user.id,
|
|
||||||
&ignore_users,
|
|
||||||
&Some(user.clone()),
|
|
||||||
)
|
|
||||||
.await
|
.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),
|
||||||
},
|
},
|
||||||
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,7 +105,14 @@ pub async fn popular_request(
|
||||||
Ok(l) => match data
|
Ok(l) => match data
|
||||||
.0
|
.0
|
||||||
.fill_posts_with_community(
|
.fill_posts_with_community(
|
||||||
data.0.posts_muted_phrase_filter(
|
l,
|
||||||
|
if let Some(ref ua) = user { ua.id } else { 0 },
|
||||||
|
&ignore_users,
|
||||||
|
&user,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
Ok(l) => data.0.posts_muted_phrase_filter(
|
||||||
&l,
|
&l,
|
||||||
if let Some(ref ua) = user {
|
if let Some(ref ua) = user {
|
||||||
Some(&ua.settings.muted)
|
Some(&ua.settings.muted)
|
||||||
|
@ -117,13 +120,6 @@ pub async fn popular_request(
|
||||||
None
|
None
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
if let Some(ref ua) = user { ua.id } else { 0 },
|
|
||||||
&ignore_users,
|
|
||||||
&user,
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
{
|
|
||||||
Ok(l) => l,
|
|
||||||
Err(e) => return Html(render_error(e, &jar, &data, &user).await),
|
Err(e) => return Html(render_error(e, &jar, &data, &user).await),
|
||||||
},
|
},
|
||||||
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
|
Ok(l) => match data
|
||||||
.0
|
.0
|
||||||
.fill_posts_with_community(
|
.fill_posts_with_community(l, user.id, &ignore_users, &Some(user.clone()))
|
||||||
data.0
|
|
||||||
.posts_muted_phrase_filter(&l, Some(&user.settings.muted)),
|
|
||||||
user.id,
|
|
||||||
&ignore_users,
|
|
||||||
&Some(user.clone()),
|
|
||||||
)
|
|
||||||
.await
|
.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)),
|
||||||
},
|
},
|
||||||
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,7 +194,14 @@ pub async fn all_request(
|
||||||
Ok(l) => match data
|
Ok(l) => match data
|
||||||
.0
|
.0
|
||||||
.fill_posts_with_community(
|
.fill_posts_with_community(
|
||||||
data.0.posts_muted_phrase_filter(
|
l,
|
||||||
|
if let Some(ref ua) = user { ua.id } else { 0 },
|
||||||
|
&ignore_users,
|
||||||
|
&user,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
Ok(l) => data.0.posts_muted_phrase_filter(
|
||||||
&l,
|
&l,
|
||||||
if let Some(ref ua) = user {
|
if let Some(ref ua) = user {
|
||||||
Some(&ua.settings.muted)
|
Some(&ua.settings.muted)
|
||||||
|
@ -210,13 +209,6 @@ pub async fn all_request(
|
||||||
None
|
None
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
if let Some(ref ua) = user { ua.id } else { 0 },
|
|
||||||
&ignore_users,
|
|
||||||
&user,
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
{
|
|
||||||
Ok(l) => l,
|
|
||||||
Err(e) => return Html(render_error(e, &jar, &data, &user).await),
|
Err(e) => return Html(render_error(e, &jar, &data, &user).await),
|
||||||
},
|
},
|
||||||
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
|
Ok(l) => match data
|
||||||
.0
|
.0
|
||||||
.fill_posts_with_community(
|
.fill_posts_with_community(l, user.id, &ignore_users, &Some(user.clone()))
|
||||||
data.0
|
|
||||||
.posts_muted_phrase_filter(&l, Some(&user.settings.muted)),
|
|
||||||
user.id,
|
|
||||||
&ignore_users,
|
|
||||||
&Some(user.clone()),
|
|
||||||
)
|
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(l) => l,
|
Ok(l) => data
|
||||||
|
.0
|
||||||
|
.posts_muted_phrase_filter(&l, Some(&user.settings.muted)),
|
||||||
Err(_) => Vec::new(),
|
Err(_) => Vec::new(),
|
||||||
},
|
},
|
||||||
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)),
|
||||||
|
@ -624,16 +612,12 @@ pub async fn search_request(
|
||||||
match data.0.get_posts_searched(12, req.page, &req.query).await {
|
match data.0.get_posts_searched(12, req.page, &req.query).await {
|
||||||
Ok(l) => match data
|
Ok(l) => match data
|
||||||
.0
|
.0
|
||||||
.fill_posts_with_community(
|
.fill_posts_with_community(l, user.id, &ignore_users, &Some(user.clone()))
|
||||||
data.0
|
|
||||||
.posts_muted_phrase_filter(&l, Some(&user.settings.muted)),
|
|
||||||
user.id,
|
|
||||||
&ignore_users,
|
|
||||||
&Some(user.clone()),
|
|
||||||
)
|
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(l) => l,
|
Ok(l) => data
|
||||||
|
.0
|
||||||
|
.posts_muted_phrase_filter(&l, Some(&user.settings.muted)),
|
||||||
Err(_) => Vec::new(),
|
Err(_) => Vec::new(),
|
||||||
},
|
},
|
||||||
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)),
|
||||||
|
|
|
@ -245,7 +245,14 @@ pub async fn posts_request(
|
||||||
Ok(p) => match data
|
Ok(p) => match data
|
||||||
.0
|
.0
|
||||||
.fill_posts_with_community(
|
.fill_posts_with_community(
|
||||||
data.0.posts_muted_phrase_filter(
|
p,
|
||||||
|
if let Some(ref ua) = user { ua.id } else { 0 },
|
||||||
|
&ignore_users,
|
||||||
|
&user,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
Ok(p) => data.0.posts_muted_phrase_filter(
|
||||||
&p,
|
&p,
|
||||||
if let Some(ref ua) = user {
|
if let Some(ref ua) = user {
|
||||||
Some(&ua.settings.muted)
|
Some(&ua.settings.muted)
|
||||||
|
@ -253,13 +260,6 @@ pub async fn posts_request(
|
||||||
None
|
None
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
if let Some(ref ua) = user { ua.id } else { 0 },
|
|
||||||
&ignore_users,
|
|
||||||
&user,
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
{
|
|
||||||
Ok(p) => p,
|
|
||||||
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
|
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
|
||||||
},
|
},
|
||||||
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,7 +273,14 @@ pub async fn posts_request(
|
||||||
Ok(p) => match data
|
Ok(p) => match data
|
||||||
.0
|
.0
|
||||||
.fill_posts_with_community(
|
.fill_posts_with_community(
|
||||||
data.0.posts_muted_phrase_filter(
|
p,
|
||||||
|
if let Some(ref ua) = user { ua.id } else { 0 },
|
||||||
|
&ignore_users,
|
||||||
|
&user,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
Ok(p) => data.0.posts_muted_phrase_filter(
|
||||||
&p,
|
&p,
|
||||||
if let Some(ref ua) = user {
|
if let Some(ref ua) = user {
|
||||||
Some(&ua.settings.muted)
|
Some(&ua.settings.muted)
|
||||||
|
@ -281,13 +288,6 @@ pub async fn posts_request(
|
||||||
None
|
None
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
if let Some(ref ua) = user { ua.id } else { 0 },
|
|
||||||
&ignore_users,
|
|
||||||
&user,
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
{
|
|
||||||
Ok(p) => p,
|
|
||||||
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
|
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
|
||||||
},
|
},
|
||||||
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
|
Ok(p) => match data
|
||||||
.0
|
.0
|
||||||
.fill_posts_with_community(
|
.fill_posts_with_community(
|
||||||
data.0.posts_muted_phrase_filter(
|
p,
|
||||||
&p,
|
|
||||||
if let Some(ref ua) = user {
|
|
||||||
Some(&ua.settings.muted)
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
},
|
|
||||||
),
|
|
||||||
if let Some(ref ua) = user { ua.id } else { 0 },
|
if let Some(ref ua) = user { ua.id } else { 0 },
|
||||||
&ignore_users,
|
&ignore_users,
|
||||||
&user,
|
&user,
|
||||||
)
|
)
|
||||||
.await
|
.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)),
|
||||||
},
|
},
|
||||||
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,7 +415,14 @@ pub async fn replies_request(
|
||||||
Ok(p) => match data
|
Ok(p) => match data
|
||||||
.0
|
.0
|
||||||
.fill_posts_with_community(
|
.fill_posts_with_community(
|
||||||
data.0.posts_muted_phrase_filter(
|
p,
|
||||||
|
if let Some(ref ua) = user { ua.id } else { 0 },
|
||||||
|
&ignore_users,
|
||||||
|
&user,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
Ok(p) => data.0.posts_muted_phrase_filter(
|
||||||
&p,
|
&p,
|
||||||
if let Some(ref ua) = user {
|
if let Some(ref ua) = user {
|
||||||
Some(&ua.settings.muted)
|
Some(&ua.settings.muted)
|
||||||
|
@ -423,13 +430,6 @@ pub async fn replies_request(
|
||||||
None
|
None
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
if let Some(ref ua) = user { ua.id } else { 0 },
|
|
||||||
&ignore_users,
|
|
||||||
&user,
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
{
|
|
||||||
Ok(p) => p,
|
|
||||||
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
|
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
|
||||||
},
|
},
|
||||||
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,7 +528,14 @@ pub async fn media_request(
|
||||||
Ok(p) => match data
|
Ok(p) => match data
|
||||||
.0
|
.0
|
||||||
.fill_posts_with_community(
|
.fill_posts_with_community(
|
||||||
data.0.posts_muted_phrase_filter(
|
p,
|
||||||
|
if let Some(ref ua) = user { ua.id } else { 0 },
|
||||||
|
&ignore_users,
|
||||||
|
&user,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
Ok(p) => data.0.posts_muted_phrase_filter(
|
||||||
&p,
|
&p,
|
||||||
if let Some(ref ua) = user {
|
if let Some(ref ua) = user {
|
||||||
Some(&ua.settings.muted)
|
Some(&ua.settings.muted)
|
||||||
|
@ -536,13 +543,6 @@ pub async fn media_request(
|
||||||
None
|
None
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
if let Some(ref ua) = user { ua.id } else { 0 },
|
|
||||||
&ignore_users,
|
|
||||||
&user,
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
{
|
|
||||||
Ok(p) => p,
|
|
||||||
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
|
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
|
||||||
},
|
},
|
||||||
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.
|
/// Update posts which contain a muted phrase.
|
||||||
pub fn posts_muted_phrase_filter(
|
pub fn posts_muted_phrase_filter(
|
||||||
&self,
|
&self,
|
||||||
posts: &Vec<Post>,
|
posts: &Vec<FullPost>,
|
||||||
muted: Option<&Vec<String>>,
|
muted: Option<&Vec<String>>,
|
||||||
) -> Vec<Post> {
|
) -> Vec<FullPost> {
|
||||||
|
// this shit is actually ass bro it has to clone
|
||||||
|
// very useless
|
||||||
let muted = match muted {
|
let muted = match muted {
|
||||||
Some(m) => m,
|
Some(m) => m,
|
||||||
None => return posts.to_owned(),
|
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 mut post in posts.clone() {
|
||||||
for phrase in muted {
|
for phrase in muted {
|
||||||
|
@ -486,10 +488,27 @@ impl DataManager {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if post.content.to_lowercase().contains(&phrase.to_lowercase()) {
|
if post
|
||||||
post.context.content_warning = "Contains muted phrase".to_string();
|
.0
|
||||||
|
.content
|
||||||
|
.to_lowercase()
|
||||||
|
.contains(&phrase.to_lowercase())
|
||||||
|
{
|
||||||
|
post.0.context.content_warning = "Contains muted phrase".to_string();
|
||||||
break;
|
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);
|
out.push(post);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue