mirror of https://github.com/LemmyNet/lemmy.git
Post remove delete federation outbound fix0 (#3613)
* add new function build_post_response_deleted_allowed * PostDelete uses new function build_post_response_deleted_allowed * RemovePost uses new build_post_response_deleted_allowed function * code comments about mod or admin flag having other use * reformat "cargo +nightly fmt --all"pull/3651/head
parent
0ada7dc889
commit
38c6210912
|
@ -82,6 +82,19 @@ pub async fn build_post_response(
|
|||
Ok(PostResponse { post_view })
|
||||
}
|
||||
|
||||
// this is a variation of build_post_response that returns post even if end-user-delted or mod-removed.
|
||||
// Assumption is that before this function is ever called, the user is already confirmed to be authorized to view post.
|
||||
// See GitHub Issue #3588
|
||||
pub async fn build_post_response_deleted_allowed(
|
||||
context: &Data<LemmyContext>,
|
||||
_community_id: CommunityId,
|
||||
person_id: PersonId,
|
||||
post_id: PostId,
|
||||
) -> Result<PostResponse, LemmyError> {
|
||||
let post_view = PostView::read(&mut context.pool(), post_id, Some(person_id), Some(true)).await?;
|
||||
Ok(PostResponse { post_view })
|
||||
}
|
||||
|
||||
// TODO: this function is a mess and should be split up to handle email seperately
|
||||
#[tracing::instrument(skip_all)]
|
||||
pub async fn send_local_notifs(
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use crate::PerformCrud;
|
||||
use actix_web::web::Data;
|
||||
use lemmy_api_common::{
|
||||
build_response::build_post_response,
|
||||
build_response::build_post_response_deleted_allowed,
|
||||
context::LemmyContext,
|
||||
post::{DeletePost, PostResponse},
|
||||
utils::{check_community_ban, check_community_deleted_or_removed, local_user_view_from_jwt},
|
||||
|
@ -52,7 +52,7 @@ impl PerformCrud for DeletePost {
|
|||
)
|
||||
.await?;
|
||||
|
||||
build_post_response(
|
||||
build_post_response_deleted_allowed(
|
||||
context,
|
||||
orig_post.community_id,
|
||||
local_user_view.person.id,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use crate::PerformCrud;
|
||||
use actix_web::web::Data;
|
||||
use lemmy_api_common::{
|
||||
build_response::build_post_response,
|
||||
build_response::build_post_response_deleted_allowed,
|
||||
context::LemmyContext,
|
||||
post::{PostResponse, RemovePost},
|
||||
utils::{check_community_ban, is_mod_or_admin, local_user_view_from_jwt},
|
||||
|
@ -61,7 +61,7 @@ impl PerformCrud for RemovePost {
|
|||
};
|
||||
ModRemovePost::create(&mut context.pool(), &form).await?;
|
||||
|
||||
build_post_response(
|
||||
build_post_response_deleted_allowed(
|
||||
context,
|
||||
orig_post.community_id,
|
||||
local_user_view.person.id,
|
||||
|
|
|
@ -146,6 +146,7 @@ impl PostView {
|
|||
.into_boxed();
|
||||
|
||||
// Hide deleted and removed for non-admins or mods
|
||||
// Note: one special use case for this flag variable is when end-user-delete post or mod-removed post.
|
||||
if !is_mod_or_admin.unwrap_or(false) {
|
||||
query = query
|
||||
.filter(community::removed.eq(false))
|
||||
|
|
Loading…
Reference in New Issue