]> Untitled Git - lemmy.git/commitdiff
Dont blank out post or community info. Fixes #1813 (#1841)
authorDessalines <dessalines@users.noreply.github.com>
Wed, 27 Oct 2021 13:34:18 +0000 (09:34 -0400)
committerGitHub <noreply@github.com>
Wed, 27 Oct 2021 13:34:18 +0000 (13:34 +0000)
* Dont blank out post or community info. Fixes #1813

* Fix federation tests

* Only blank out info for non-logged in users.

* Remove pointless trait.

* Blank the community if deleted for post

* Fix hook

* Fixing again

* Fixing again

* Fixing again

api_tests/src/community.spec.ts
api_tests/src/post.spec.ts
crates/api/src/site.rs
crates/api_crud/src/community/read.rs
crates/api_crud/src/post/read.rs
crates/websocket/src/send.rs

index cdbb99e00d0800be56bc24834cf6820ec4b33e07..e1f6825ae8ab9fc369061b26309984d314b12572 100644 (file)
@@ -75,7 +75,7 @@ test('Delete community', async () => {
     communityRes.community_view.community.id
   );
   expect(deleteCommunityRes.community_view.community.deleted).toBe(true);
-  expect(deleteCommunityRes.community_view.community.title).toBe("");
+  expect(deleteCommunityRes.community_view.community.title).toBe(communityRes.community_view.community.title);
 
   // Make sure it got deleted on A
   let communityOnAlphaDeleted = await getCommunity(
@@ -126,7 +126,7 @@ test('Remove community', async () => {
     communityRes.community_view.community.id
   );
   expect(removeCommunityRes.community_view.community.removed).toBe(true);
-  expect(removeCommunityRes.community_view.community.title).toBe("");
+  expect(removeCommunityRes.community_view.community.title).toBe(communityRes.community_view.community.title);
 
   // Make sure it got Removed on A
   let communityOnAlphaRemoved = await getCommunity(
index 64c54eec0b9cec83eb441a85fc42b8c361ffaa5b..b3b52ee0bef9c935dec6554ecd0ac806f338bd79 100644 (file)
@@ -206,7 +206,7 @@ test('Delete a post', async () => {
 
   let deletedPost = await deletePost(alpha, true, postRes.post_view.post);
   expect(deletedPost.post_view.post.deleted).toBe(true);
-  expect(deletedPost.post_view.post.name).toBe("");
+  expect(deletedPost.post_view.post.name).toBe(postRes.post_view.post.name);
 
   // Make sure lemmy beta sees post is deleted
   let betaPost = (await resolvePost(beta, postRes.post_view.post)).post;
@@ -232,7 +232,7 @@ test('Remove a post from admin and community on different instance', async () =>
 
   let removedPost = await removePost(alpha, true, postRes.post_view.post);
   expect(removedPost.post_view.post.removed).toBe(true);
-  expect(removedPost.post_view.post.name).toBe("");
+  expect(removedPost.post_view.post.name).toBe(postRes.post_view.post.name);
 
   // Make sure lemmy beta sees post is NOT removed
   let betaPost = (await resolvePost(beta, postRes.post_view.post)).post;
index 105412b0e1f760ad51154b304df189f5fb413b7e..2797955a5dae79875789d103f027dbeb20236ee7 100644 (file)
@@ -339,26 +339,28 @@ impl Perform for Search {
       }
     };
 
-    // Blank out deleted or removed info
-    for cv in comments
-      .iter_mut()
-      .filter(|cv| cv.comment.deleted || cv.comment.removed)
-    {
-      cv.comment = cv.to_owned().comment.blank_out_deleted_or_removed_info();
-    }
+    // Blank out deleted or removed info for non logged in users
+    if person_id.is_none() {
+      for cv in communities
+        .iter_mut()
+        .filter(|cv| cv.community.deleted || cv.community.removed)
+      {
+        cv.community = cv.to_owned().community.blank_out_deleted_or_removed_info();
+      }
 
-    for cv in communities
-      .iter_mut()
-      .filter(|cv| cv.community.deleted || cv.community.removed)
-    {
-      cv.community = cv.to_owned().community.blank_out_deleted_or_removed_info();
-    }
+      for pv in posts
+        .iter_mut()
+        .filter(|p| p.post.deleted || p.post.removed)
+      {
+        pv.post = pv.to_owned().post.blank_out_deleted_or_removed_info();
+      }
 
-    for pv in posts
-      .iter_mut()
-      .filter(|p| p.post.deleted || p.post.removed)
-    {
-      pv.post = pv.to_owned().post.blank_out_deleted_or_removed_info();
+      for cv in comments
+        .iter_mut()
+        .filter(|cv| cv.comment.deleted || cv.comment.removed)
+      {
+        cv.comment = cv.to_owned().comment.blank_out_deleted_or_removed_info();
+      }
     }
 
     // Return the jwt
index d18ef99f6616329edef22a7192d8939492a95964..91effae8752b6bff54a7ae6086421bd2afbd14e6 100644 (file)
@@ -55,8 +55,9 @@ impl PerformCrud for GetCommunity {
     .await?
     .map_err(|e| ApiError::err("couldnt_find_community", e))?;
 
-    // Blank out deleted or removed info
-    if community_view.community.deleted || community_view.community.removed {
+    // Blank out deleted or removed info for non-logged in users
+    if person_id.is_none() && (community_view.community.deleted || community_view.community.removed)
+    {
       community_view.community = community_view.community.blank_out_deleted_or_removed_info();
     }
 
@@ -121,12 +122,14 @@ impl PerformCrud for ListCommunities {
     })
     .await??;
 
-    // Blank out deleted or removed info
-    for cv in communities
-      .iter_mut()
-      .filter(|cv| cv.community.deleted || cv.community.removed)
-    {
-      cv.community = cv.to_owned().community.blank_out_deleted_or_removed_info();
+    // Blank out deleted or removed info for non-logged in users
+    if person_id.is_none() {
+      for cv in communities
+        .iter_mut()
+        .filter(|cv| cv.community.deleted || cv.community.removed)
+      {
+        cv.community = cv.to_owned().community.blank_out_deleted_or_removed_info();
+      }
     }
 
     // Return the jwt
index ee05b7231463dd96ba3b884d1f5c45b88c8c2787..901d1e9350b2eb2567f0691a46ef8ac63885adf8 100644 (file)
@@ -44,11 +44,6 @@ impl PerformCrud for GetPost {
     .await?
     .map_err(|e| ApiError::err("couldnt_find_post", e))?;
 
-    // Blank out deleted info
-    if post_view.post.deleted || post_view.post.removed {
-      post_view.post = post_view.post.blank_out_deleted_or_removed_info();
-    }
-
     // Mark the post as read
     if let Some(person_id) = person_id {
       mark_post_as_read(person_id, id, context.pool()).await?;
@@ -65,32 +60,36 @@ impl PerformCrud for GetPost {
     })
     .await??;
 
-    // Blank out deleted or removed info
-    for cv in comments
-      .iter_mut()
-      .filter(|cv| cv.comment.deleted || cv.comment.removed)
-    {
-      cv.comment = cv.to_owned().comment.blank_out_deleted_or_removed_info();
-    }
-
-    let community_id = post_view.community.id;
-    let moderators = blocking(context.pool(), move |conn| {
-      CommunityModeratorView::for_community(conn, community_id)
-    })
-    .await??;
-
     // Necessary for the sidebar
+    let community_id = post_view.community.id;
     let mut community_view = blocking(context.pool(), move |conn| {
       CommunityView::read(conn, community_id, person_id)
     })
     .await?
     .map_err(|e| ApiError::err("couldnt_find_community", e))?;
 
-    // Blank out deleted or removed info
-    if community_view.community.deleted || community_view.community.removed {
-      community_view.community = community_view.community.blank_out_deleted_or_removed_info();
+    // Blank out deleted or removed info for non-logged in users
+    if person_id.is_none() {
+      if post_view.post.deleted || post_view.post.removed {
+        post_view.post = post_view.post.blank_out_deleted_or_removed_info();
+      }
+
+      for cv in comments
+        .iter_mut()
+        .filter(|cv| cv.comment.deleted || cv.comment.removed)
+      {
+        cv.comment = cv.to_owned().comment.blank_out_deleted_or_removed_info();
+      }
+      if community_view.community.deleted || community_view.community.removed {
+        community_view.community = community_view.community.blank_out_deleted_or_removed_info();
+      }
     }
 
+    let moderators = blocking(context.pool(), move |conn| {
+      CommunityModeratorView::for_community(conn, community_id)
+    })
+    .await??;
+
     let online = context
       .chat_server()
       .send(GetPostUsersOnline { post_id: data.id })
@@ -162,12 +161,21 @@ impl PerformCrud for GetPosts {
     .await?
     .map_err(|e| ApiError::err("couldnt_get_posts", e))?;
 
-    // Blank out deleted or removed info
-    for pv in posts
-      .iter_mut()
-      .filter(|p| p.post.deleted || p.post.removed)
-    {
-      pv.post = pv.to_owned().post.blank_out_deleted_or_removed_info();
+    // Blank out deleted or removed info for non-logged in users
+    if person_id.is_none() {
+      for pv in posts
+        .iter_mut()
+        .filter(|p| p.post.deleted || p.post.removed)
+      {
+        pv.post = pv.to_owned().post.blank_out_deleted_or_removed_info();
+      }
+
+      for pv in posts
+        .iter_mut()
+        .filter(|p| p.community.deleted || p.community.removed)
+      {
+        pv.community = pv.to_owned().community.blank_out_deleted_or_removed_info();
+      }
     }
 
     Ok(GetPostsResponse { posts })
index 95780c3299c96beab9764e9be808d3c1a08fb409..85f24f12e4569f3a6aa76f0490572dd6f809bcff 100644 (file)
@@ -43,15 +43,11 @@ pub async fn send_post_ws_message<OP: ToString + Send + OperationType + 'static>
   person_id: Option<PersonId>,
   context: &LemmyContext,
 ) -> Result<PostResponse, LemmyError> {
-  let mut post_view = blocking(context.pool(), move |conn| {
+  let post_view = blocking(context.pool(), move |conn| {
     PostView::read(conn, post_id, person_id)
   })
   .await??;
 
-  if post_view.post.deleted || post_view.post.removed {
-    post_view.post = post_view.post.blank_out_deleted_or_removed_info();
-  }
-
   let res = PostResponse { post_view };
 
   context.chat_server().do_send(SendPost {
@@ -118,14 +114,10 @@ pub async fn send_community_ws_message<OP: ToString + Send + OperationType + 'st
   person_id: Option<PersonId>,
   context: &LemmyContext,
 ) -> Result<CommunityResponse, LemmyError> {
-  let mut community_view = blocking(context.pool(), move |conn| {
+  let community_view = blocking(context.pool(), move |conn| {
     CommunityView::read(conn, community_id, person_id)
   })
   .await??;
-  // Blank out deleted or removed info
-  if community_view.community.deleted || community_view.community.removed {
-    community_view.community = community_view.community.blank_out_deleted_or_removed_info();
-  }
 
   let res = CommunityResponse { community_view };