add: hide posts from users who have blocked you from timelines
This commit is contained in:
parent
22ae479bd7
commit
8de5c0ea76
10 changed files with 84 additions and 81 deletions
|
@ -224,3 +224,29 @@ macro_rules! check_user_blocked_or_private {
|
|||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! ignore_users_gen {
|
||||
($user:ident, $data:ident) => {
|
||||
if let Some(ref ua) = $user {
|
||||
[
|
||||
$data.0.get_userblocks_receivers(ua.id).await,
|
||||
$data.0.get_userblocks_initiator_by_receivers(ua.id).await,
|
||||
]
|
||||
.concat()
|
||||
} else {
|
||||
Vec::new()
|
||||
}
|
||||
};
|
||||
|
||||
($user:ident!, $data:ident) => {
|
||||
[
|
||||
$data.0.get_userblocks_receivers($user.id).await,
|
||||
$data
|
||||
.0
|
||||
.get_userblocks_initiator_by_receivers($user.id)
|
||||
.await,
|
||||
]
|
||||
.concat()
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1138,7 +1138,7 @@ show_kick=false, secondary=false) -%}
|
|||
|
||||
<div
|
||||
class="flex justify-center flex-col"
|
||||
style="{% if show_menu or show_kick -%}width: 60%{% else %}max-width: 200px{%- endif %}"
|
||||
style="{% if show_menu or show_kick -%}width: 60%{% else %}max-width: 150px{%- endif %}"
|
||||
>
|
||||
{{ self::full_username(user=user) }}
|
||||
<div class="user_status">{{ self::user_status(other_user=user) }}</div>
|
||||
|
|
|
@ -157,7 +157,7 @@ pub async fn stream_request(
|
|||
}
|
||||
};
|
||||
|
||||
let ignore_users = data.0.get_userblocks_receivers(user.id).await;
|
||||
let ignore_users = crate::ignore_users_gen!(user!, data);
|
||||
|
||||
let membership = match data
|
||||
.0
|
||||
|
@ -322,7 +322,7 @@ pub async fn channels_request(
|
|||
};
|
||||
|
||||
let members = if community == 0 && channel.is_some() {
|
||||
let ignore_users = data.0.get_userblocks_receivers(user.id).await;
|
||||
let ignore_users = crate::ignore_users_gen!(user!, data);
|
||||
|
||||
let mut channel = channel.as_ref().unwrap().clone();
|
||||
channel.members.insert(0, channel.owner); // include the owner in the members list (at the start)
|
||||
|
|
|
@ -392,11 +392,7 @@ pub async fn feed_request(
|
|||
let (can_read, _) = check_permissions!(community, jar, data, user);
|
||||
|
||||
// ...
|
||||
let ignore_users = if let Some(ref ua) = user {
|
||||
data.0.get_userblocks_receivers(ua.id).await
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
let ignore_users = crate::ignore_users_gen!(user, data);
|
||||
|
||||
let feed = match data
|
||||
.0
|
||||
|
@ -494,11 +490,7 @@ pub async fn questions_request(
|
|||
let (can_read, _) = check_permissions!(community, jar, data, user);
|
||||
|
||||
// ...
|
||||
let ignore_users = if let Some(ref ua) = user {
|
||||
data.0.get_userblocks_receivers(ua.id).await
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
let ignore_users = crate::ignore_users_gen!(user, data);
|
||||
|
||||
let feed = match data
|
||||
.0
|
||||
|
@ -673,11 +665,7 @@ pub async fn post_request(
|
|||
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
|
||||
};
|
||||
|
||||
let ignore_users = if let Some(ref ua) = user {
|
||||
data.0.get_userblocks_receivers(ua.id).await
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
let ignore_users = crate::ignore_users_gen!(user, data);
|
||||
|
||||
// ...
|
||||
let owner = match data.0.get_user_by_id(post.owner).await {
|
||||
|
@ -739,11 +727,7 @@ pub async fn post_request(
|
|||
}
|
||||
|
||||
// ...
|
||||
let ignore_users = if let Some(ref ua) = user {
|
||||
data.0.get_userblocks_receivers(ua.id).await
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
let ignore_users = crate::ignore_users_gen!(user, data);
|
||||
|
||||
let feed = match data.0.get_post_comments(post.id, 12, props.page).await {
|
||||
Ok(p) => match data.0.fill_posts(p, &ignore_users, &user).await {
|
||||
|
@ -827,11 +811,7 @@ pub async fn reposts_request(
|
|||
Err(e) => return Err(Html(render_error(e, &jar, &data, &user).await)),
|
||||
};
|
||||
|
||||
let ignore_users = if let Some(ref ua) = user {
|
||||
data.0.get_userblocks_receivers(ua.id).await
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
let ignore_users = crate::ignore_users_gen!(user, data);
|
||||
|
||||
// ...
|
||||
let owner = match data.0.get_user_by_id(post.owner).await {
|
||||
|
@ -860,11 +840,7 @@ pub async fn reposts_request(
|
|||
}
|
||||
|
||||
// ...
|
||||
let ignore_users = if let Some(ref ua) = user {
|
||||
data.0.get_userblocks_receivers(ua.id).await
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
let ignore_users = crate::ignore_users_gen!(user, data);
|
||||
|
||||
let list = if props.quotes {
|
||||
match data
|
||||
|
@ -973,7 +949,7 @@ pub async fn likes_request(
|
|||
Err(e) => return Err(Html(render_error(e, &jar, &data, &Some(user)).await)),
|
||||
};
|
||||
|
||||
let ignore_users = data.0.get_userblocks_receivers(user.id).await;
|
||||
let ignore_users = crate::ignore_users_gen!(user!, data);
|
||||
|
||||
// ...
|
||||
let ua = Some(user.clone());
|
||||
|
@ -1015,7 +991,7 @@ pub async fn likes_request(
|
|||
}
|
||||
|
||||
// ...
|
||||
let ignore_users = data.0.get_userblocks_receivers(user.id).await;
|
||||
let ignore_users = crate::ignore_users_gen!(user!, data);
|
||||
|
||||
let list = match if user.permissions.check(FinePermission::MANAGE_REACTIONS) {
|
||||
// all reactions
|
||||
|
@ -1213,11 +1189,7 @@ pub async fn question_request(
|
|||
}
|
||||
|
||||
// ...
|
||||
let ignore_users = if let Some(ref ua) = user {
|
||||
data.0.get_userblocks_receivers(ua.id).await
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
let ignore_users = crate::ignore_users_gen!(user, data);
|
||||
|
||||
let feed = match data
|
||||
.0
|
||||
|
|
|
@ -62,7 +62,7 @@ pub async fn index_request(
|
|||
}
|
||||
};
|
||||
|
||||
let ignore_users = data.0.get_userblocks_receivers(user.id).await;
|
||||
let ignore_users = crate::ignore_users_gen!(user!, data);
|
||||
|
||||
let list = match data
|
||||
.0
|
||||
|
@ -97,11 +97,7 @@ pub async fn popular_request(
|
|||
let data = data.read().await;
|
||||
let user = get_user_from_token!(jar, data.0);
|
||||
|
||||
let ignore_users = if let Some(ref ua) = user {
|
||||
data.0.get_userblocks_receivers(ua.id).await
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
let ignore_users = crate::ignore_users_gen!(user, data);
|
||||
|
||||
let list = match data.0.get_popular_posts(12, req.page, 604_800_000).await {
|
||||
Ok(l) => match data
|
||||
|
@ -144,7 +140,7 @@ pub async fn following_request(
|
|||
}
|
||||
};
|
||||
|
||||
let ignore_users = data.0.get_userblocks_receivers(user.id).await;
|
||||
let ignore_users = crate::ignore_users_gen!(user!, data);
|
||||
|
||||
let list = match data
|
||||
.0
|
||||
|
@ -181,11 +177,7 @@ pub async fn all_request(
|
|||
let data = data.read().await;
|
||||
let user = get_user_from_token!(jar, data.0);
|
||||
|
||||
let ignore_users = if let Some(ref ua) = user {
|
||||
data.0.get_userblocks_receivers(ua.id).await
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
let ignore_users = crate::ignore_users_gen!(user, data);
|
||||
|
||||
let list = match data.0.get_latest_posts(12, req.page).await {
|
||||
Ok(l) => match data
|
||||
|
@ -226,7 +218,7 @@ pub async fn index_questions_request(
|
|||
}
|
||||
};
|
||||
|
||||
let ignore_users = data.0.get_userblocks_receivers(user.id).await;
|
||||
let ignore_users = crate::ignore_users_gen!(user!, data);
|
||||
|
||||
let list = match data
|
||||
.0
|
||||
|
@ -266,7 +258,7 @@ pub async fn popular_questions_request(
|
|||
}
|
||||
};
|
||||
|
||||
let ignore_users = data.0.get_userblocks_receivers(user.id).await;
|
||||
let ignore_users = crate::ignore_users_gen!(user!, data);
|
||||
|
||||
let list = match data
|
||||
.0
|
||||
|
@ -308,7 +300,7 @@ pub async fn following_questions_request(
|
|||
}
|
||||
};
|
||||
|
||||
let ignore_users = data.0.get_userblocks_receivers(user.id).await;
|
||||
let ignore_users = crate::ignore_users_gen!(user!, data);
|
||||
|
||||
let list = match data
|
||||
.0
|
||||
|
@ -343,11 +335,7 @@ pub async fn all_questions_request(
|
|||
let data = data.read().await;
|
||||
let user = get_user_from_token!(jar, data.0);
|
||||
|
||||
let ignore_users = if let Some(ref ua) = user {
|
||||
data.0.get_userblocks_receivers(ua.id).await
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
let ignore_users = crate::ignore_users_gen!(user, data);
|
||||
|
||||
let list = match data.0.get_latest_global_questions(12, req.page).await {
|
||||
Ok(l) => match data.0.fill_questions(l, &ignore_users).await {
|
||||
|
@ -419,7 +407,7 @@ pub async fn requests_request(
|
|||
Err(e) => return Err(Html(render_error(e, &jar, &data, &Some(user)).await)),
|
||||
};
|
||||
|
||||
let ignore_users = data.0.get_userblocks_receivers(user.id).await;
|
||||
let ignore_users = crate::ignore_users_gen!(user!, data);
|
||||
|
||||
let questions = match data
|
||||
.0
|
||||
|
@ -533,7 +521,7 @@ pub async fn search_request(
|
|||
|
||||
req.query = req.query.trim().replace(" ", " & "); // change spaces into & for tsquery
|
||||
|
||||
let ignore_users = data.0.get_userblocks_receivers(user.id).await;
|
||||
let ignore_users = crate::ignore_users_gen!(user!, data);
|
||||
|
||||
let list = if req.query.is_empty() {
|
||||
Vec::new()
|
||||
|
|
|
@ -234,11 +234,7 @@ pub async fn posts_request(
|
|||
}
|
||||
|
||||
// fetch data
|
||||
let ignore_users = if let Some(ref ua) = user {
|
||||
data.0.get_userblocks_receivers(ua.id).await
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
let ignore_users = crate::ignore_users_gen!(user, data);
|
||||
|
||||
let posts = if props.tag.is_empty() {
|
||||
match data
|
||||
|
@ -387,11 +383,7 @@ pub async fn replies_request(
|
|||
check_user_blocked_or_private!(user, other_user, data, jar);
|
||||
|
||||
// fetch data
|
||||
let ignore_users = if let Some(ref ua) = user {
|
||||
data.0.get_userblocks_receivers(ua.id).await
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
let ignore_users = crate::ignore_users_gen!(user, data);
|
||||
|
||||
let posts = match data
|
||||
.0
|
||||
|
@ -496,11 +488,7 @@ pub async fn media_request(
|
|||
check_user_blocked_or_private!(user, other_user, data, jar);
|
||||
|
||||
// fetch data
|
||||
let ignore_users = if let Some(ref ua) = user {
|
||||
data.0.get_userblocks_receivers(ua.id).await
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
let ignore_users = crate::ignore_users_gen!(user, data);
|
||||
|
||||
let posts = match data
|
||||
.0
|
||||
|
|
|
@ -65,7 +65,7 @@ pub async fn posts_request(
|
|||
));
|
||||
}
|
||||
|
||||
let ignore_users = data.0.get_userblocks_receivers(user.id).await;
|
||||
let ignore_users = crate::ignore_users_gen!(user!, data);
|
||||
let list = match data
|
||||
.0
|
||||
.get_stack_posts(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue