* Allow comment replies from blocked users. Fixes #1793
* Clearer check block.
blocking,
check_community_ban,
check_community_deleted_or_removed,
blocking,
check_community_ban,
check_community_deleted_or_removed,
check_post_deleted_or_removed,
comment::*,
get_local_user_view_from_jwt,
check_post_deleted_or_removed,
comment::*,
get_local_user_view_from_jwt,
check_community_deleted_or_removed(community_id, context.pool()).await?;
check_post_deleted_or_removed(&post)?;
check_community_deleted_or_removed(community_id, context.pool()).await?;
check_post_deleted_or_removed(&post)?;
- check_person_block(local_user_view.person.id, post.creator_id, context.pool()).await?;
-
// Check if post is locked, no new comments
if post.locked {
return Err(ApiError::err_plain("locked").into());
// Check if post is locked, no new comments
if post.locked {
return Err(ApiError::err_plain("locked").into());
.await?
.map_err(|e| ApiError::err("couldnt_create_comment", e))?;
.await?
.map_err(|e| ApiError::err("couldnt_create_comment", e))?;
- check_person_block(local_user_view.person.id, parent.creator_id, context.pool()).await?;
-
// Strange issue where sometimes the post ID is incorrect
if parent.post_id != post_id {
return Err(ApiError::err_plain("couldnt_create_comment").into());
// Strange issue where sometimes the post ID is incorrect
if parent.post_id != post_id {
return Err(ApiError::err_plain("couldnt_create_comment").into());
};
use lemmy_api_common::{
blocking,
};
use lemmy_api_common::{
blocking,
comment::CommentResponse,
community::CommunityResponse,
person::PrivateMessageResponse,
comment::CommentResponse,
community::CommunityResponse,
person::PrivateMessageResponse,
let parent_comment =
blocking(context.pool(), move |conn| Comment::read(conn, parent_id)).await?;
if let Ok(parent_comment) = parent_comment {
let parent_comment =
blocking(context.pool(), move |conn| Comment::read(conn, parent_id)).await?;
if let Ok(parent_comment) = parent_comment {
+ // Get the parent commenter local_user
+ let parent_creator_id = parent_comment.creator_id;
+
+ // Only add to recipients if that person isn't blocked
+ let creator_blocked = check_person_block(person.id, parent_creator_id, context.pool())
+ .await
+ .is_err();
+
// Don't send a notif to yourself
// Don't send a notif to yourself
- if parent_comment.creator_id != person.id {
- // Get the parent commenter local_user
+ if parent_comment.creator_id != person.id && !creator_blocked {
let user_view = blocking(context.pool(), move |conn| {
let user_view = blocking(context.pool(), move |conn| {
- LocalUserView::read_person(conn, parent_comment.creator_id)
+ LocalUserView::read_person(conn, parent_creator_id)
})
.await?;
if let Ok(parent_user_view) = user_view {
})
.await?;
if let Ok(parent_user_view) = user_view {
+ // Don't send a notif to yourself
- if post.creator_id != person.id {
+ // Only add to recipients if that person isn't blocked
+ let creator_blocked = check_person_block(person.id, post.creator_id, context.pool())
+ .await
+ .is_err();
+
+ if post.creator_id != person.id && !creator_blocked {
let creator_id = post.creator_id;
let parent_user = blocking(context.pool(), move |conn| {
LocalUserView::read_person(conn, creator_id)
let creator_id = post.creator_id;
let parent_user = blocking(context.pool(), move |conn| {
LocalUserView::read_person(conn, creator_id)