Check if post or comment are deleted first. Fixes #1864

This commit is contained in:
Dessalines 2021-10-29 00:10:29 -04:00
parent 1bec551945
commit 2c94fa880c
5 changed files with 36 additions and 18 deletions

View file

@ -44,6 +44,11 @@ impl PerformCrud for DeleteComment {
}) })
.await??; .await??;
// Dont delete it if its already been deleted.
if orig_comment.comment.deleted == data.deleted {
return Err(ApiError::err_plain("couldnt_update_comment").into());
}
check_community_ban( check_community_ban(
local_user_view.person.id, local_user_view.person.id,
orig_comment.community.id, orig_comment.community.id,

View file

@ -36,6 +36,11 @@ impl PerformCrud for DeletePost {
let post_id = data.post_id; let post_id = data.post_id;
let orig_post = blocking(context.pool(), move |conn| Post::read(conn, post_id)).await??; let orig_post = blocking(context.pool(), move |conn| Post::read(conn, post_id)).await??;
// Dont delete it if its already been deleted.
if orig_post.deleted == data.deleted {
return Err(ApiError::err_plain("couldnt_update_post").into());
}
check_community_ban( check_community_ban(
local_user_view.person.id, local_user_view.person.id,
orig_post.community_id, orig_post.community_id,

View file

@ -175,18 +175,22 @@ async fn receive_delete_action(
send_community_ws_message(community.id, ws_messages.community, None, None, context).await?; send_community_ws_message(community.id, ws_messages.community, None, None, context).await?;
} }
DeletableObjects::Post(post) => { DeletableObjects::Post(post) => {
let deleted_post = blocking(context.pool(), move |conn| { if deleted != post.deleted {
Post::update_deleted(conn, post.id, deleted) let deleted_post = blocking(context.pool(), move |conn| {
}) Post::update_deleted(conn, post.id, deleted)
.await??; })
send_post_ws_message(deleted_post.id, ws_messages.post, None, None, context).await?; .await??;
send_post_ws_message(deleted_post.id, ws_messages.post, None, None, context).await?;
}
} }
DeletableObjects::Comment(comment) => { DeletableObjects::Comment(comment) => {
let deleted_comment = blocking(context.pool(), move |conn| { if deleted != comment.deleted {
Comment::update_deleted(conn, comment.id, deleted) let deleted_comment = blocking(context.pool(), move |conn| {
}) Comment::update_deleted(conn, comment.id, deleted)
.await??; })
send_comment_ws_message_simple(deleted_comment.id, ws_messages.comment, context).await?; .await??;
send_comment_ws_message_simple(deleted_comment.id, ws_messages.comment, context).await?;
}
} }
} }
Ok(()) Ok(())

View file

@ -81,10 +81,12 @@ impl ApubObject for ApubComment {
} }
async fn delete(self, context: &LemmyContext) -> Result<(), LemmyError> { async fn delete(self, context: &LemmyContext) -> Result<(), LemmyError> {
blocking(context.pool(), move |conn| { if !self.deleted {
Comment::update_deleted(conn, self.id, true) blocking(context.pool(), move |conn| {
}) Comment::update_deleted(conn, self.id, true)
.await??; })
.await??;
}
Ok(()) Ok(())
} }

View file

@ -76,10 +76,12 @@ impl ApubObject for ApubPost {
} }
async fn delete(self, context: &LemmyContext) -> Result<(), LemmyError> { async fn delete(self, context: &LemmyContext) -> Result<(), LemmyError> {
blocking(context.pool(), move |conn| { if !self.deleted {
Post::update_deleted(conn, self.id, true) blocking(context.pool(), move |conn| {
}) Post::update_deleted(conn, self.id, true)
.await??; })
.await??;
}
Ok(()) Ok(())
} }