]> Untitled Git - lemmy.git/blobdiff - crates/websocket/src/send.rs
Allow comment replies from blocked users. Fixes #1793 (#1969)
[lemmy.git] / crates / websocket / src / send.rs
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)