mirror of
https://github.com/LemmyNet/lemmy
synced 2024-11-13 00:07:08 +00:00
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"
This commit is contained in:
parent
0ada7dc889
commit
38c6210912
4 changed files with 18 additions and 4 deletions
|
@ -82,6 +82,19 @@ pub async fn build_post_response(
|
||||||
Ok(PostResponse { post_view })
|
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
|
// TODO: this function is a mess and should be split up to handle email seperately
|
||||||
#[tracing::instrument(skip_all)]
|
#[tracing::instrument(skip_all)]
|
||||||
pub async fn send_local_notifs(
|
pub async fn send_local_notifs(
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::PerformCrud;
|
use crate::PerformCrud;
|
||||||
use actix_web::web::Data;
|
use actix_web::web::Data;
|
||||||
use lemmy_api_common::{
|
use lemmy_api_common::{
|
||||||
build_response::build_post_response,
|
build_response::build_post_response_deleted_allowed,
|
||||||
context::LemmyContext,
|
context::LemmyContext,
|
||||||
post::{DeletePost, PostResponse},
|
post::{DeletePost, PostResponse},
|
||||||
utils::{check_community_ban, check_community_deleted_or_removed, local_user_view_from_jwt},
|
utils::{check_community_ban, check_community_deleted_or_removed, local_user_view_from_jwt},
|
||||||
|
@ -52,7 +52,7 @@ impl PerformCrud for DeletePost {
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
build_post_response(
|
build_post_response_deleted_allowed(
|
||||||
context,
|
context,
|
||||||
orig_post.community_id,
|
orig_post.community_id,
|
||||||
local_user_view.person.id,
|
local_user_view.person.id,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::PerformCrud;
|
use crate::PerformCrud;
|
||||||
use actix_web::web::Data;
|
use actix_web::web::Data;
|
||||||
use lemmy_api_common::{
|
use lemmy_api_common::{
|
||||||
build_response::build_post_response,
|
build_response::build_post_response_deleted_allowed,
|
||||||
context::LemmyContext,
|
context::LemmyContext,
|
||||||
post::{PostResponse, RemovePost},
|
post::{PostResponse, RemovePost},
|
||||||
utils::{check_community_ban, is_mod_or_admin, local_user_view_from_jwt},
|
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?;
|
ModRemovePost::create(&mut context.pool(), &form).await?;
|
||||||
|
|
||||||
build_post_response(
|
build_post_response_deleted_allowed(
|
||||||
context,
|
context,
|
||||||
orig_post.community_id,
|
orig_post.community_id,
|
||||||
local_user_view.person.id,
|
local_user_view.person.id,
|
||||||
|
|
|
@ -146,6 +146,7 @@ impl PostView {
|
||||||
.into_boxed();
|
.into_boxed();
|
||||||
|
|
||||||
// Hide deleted and removed for non-admins or mods
|
// 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) {
|
if !is_mod_or_admin.unwrap_or(false) {
|
||||||
query = query
|
query = query
|
||||||
.filter(community::removed.eq(false))
|
.filter(community::removed.eq(false))
|
||||||
|
|
Loading…
Reference in a new issue