]> Untitled Git - lemmy.git/commitdiff
Allow comment replies from blocked users. Fixes #1793 (#1969)
authorDessalines <dessalines@users.noreply.github.com>
Sun, 5 Dec 2021 17:45:40 +0000 (12:45 -0500)
committerGitHub <noreply@github.com>
Sun, 5 Dec 2021 17:45:40 +0000 (17:45 +0000)
* Allow comment replies from blocked users. Fixes #1793

* Clearer check block.

crates/api_crud/src/comment/create.rs
crates/websocket/src/send.rs

index 09163aef46110d15dea66816fb800d1eb9a2b151..025e12c82710d68f126c757851d85ef47c0f70b4 100644 (file)
@@ -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());
index ccb29879e5d42bf9992adc6d263a7562bccba9df..ac0752c64776d32ec20fd616c642e625d02e76e4 100644 (file)
@@ -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)