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(
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},
)
.await?;
- build_post_response(
+ build_post_response_deleted_allowed(
context,
orig_post.community_id,
local_user_view.person.id,
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},
};
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,
.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))