From: Dessalines Date: Sun, 5 Dec 2021 17:45:40 +0000 (-0500) Subject: Allow comment replies from blocked users. Fixes #1793 (#1969) X-Git-Url: http://these/git/%22https:/nerdica.net/%22%7Bauthor_url%7D/%22?a=commitdiff_plain;h=4e9ecb26326601ceae6d2e8ab0bd1fdd330e5d8f;p=lemmy.git Allow comment replies from blocked users. Fixes #1793 (#1969) * Allow comment replies from blocked users. Fixes #1793 * Clearer check block. --- diff --git a/crates/api_crud/src/comment/create.rs b/crates/api_crud/src/comment/create.rs index 09163aef..025e12c8 100644 --- a/crates/api_crud/src/comment/create.rs +++ b/crates/api_crud/src/comment/create.rs @@ -4,7 +4,6 @@ use lemmy_api_common::{ blocking, check_community_ban, check_community_deleted_or_removed, - check_person_block, check_post_deleted_or_removed, comment::*, get_local_user_view_from_jwt, @@ -66,8 +65,6 @@ impl PerformCrud for CreateComment { 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()); @@ -80,8 +77,6 @@ impl PerformCrud for CreateComment { .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()); diff --git a/crates/websocket/src/send.rs b/crates/websocket/src/send.rs index ccb29879..ac0752c6 100644 --- a/crates/websocket/src/send.rs +++ b/crates/websocket/src/send.rs @@ -5,6 +5,7 @@ use crate::{ }; use lemmy_api_common::{ blocking, + check_person_block, comment::CommentResponse, community::CommunityResponse, person::PrivateMessageResponse, @@ -233,11 +234,18 @@ pub async fn send_local_notifs( 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 - 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| { - LocalUserView::read_person(conn, parent_comment.creator_id) + LocalUserView::read_person(conn, parent_creator_id) }) .await?; if let Ok(parent_user_view) = user_view { @@ -257,8 +265,14 @@ pub async fn send_local_notifs( } } // Its a post + // Don't send a notif to yourself None => { - 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)