From 8e8a48e229e33b62820c500004112ee8f9e3b0ca Mon Sep 17 00:00:00 2001 From: Dessalines Date: Fri, 5 Apr 2024 12:55:35 -0400 Subject: [PATCH] Revert "Fixing bug where comment replies wouldn't be sent to blocked instances." This reverts commit 1349aa351a195fdf0d179c27a8057257ca37e255. --- crates/api_common/src/build_response.rs | 8 +++++--- crates/api_common/src/utils.rs | 22 ++++++++++++++++++++-- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/crates/api_common/src/build_response.rs b/crates/api_common/src/build_response.rs index 4ac5ad4b0..19e0bb46b 100644 --- a/crates/api_common/src/build_response.rs +++ b/crates/api_common/src/build_response.rs @@ -4,7 +4,7 @@ use crate::{ context::LemmyContext, post::PostResponse, utils::{ - check_person_community_block, + check_person_instance_community_block, get_interface_language, is_mod_or_admin, send_email_to_user, @@ -149,9 +149,10 @@ pub async fn send_local_notifs( // Get the parent commenter local_user let parent_creator_id = parent_comment.creator_id; - let check_blocks = check_person_community_block( + let check_blocks = check_person_instance_community_block( person.id, parent_creator_id, + person.instance_id, community_id, &mut context.pool(), ) @@ -193,9 +194,10 @@ pub async fn send_local_notifs( } } } else { - let check_blocks = check_person_community_block( + let check_blocks = check_person_instance_community_block( person.id, post.creator_id, + person.instance_id, community_id, &mut context.pool(), ) diff --git a/crates/api_common/src/utils.rs b/crates/api_common/src/utils.rs index 03b56d6f7..ad416ffbb 100644 --- a/crates/api_common/src/utils.rs +++ b/crates/api_common/src/utils.rs @@ -6,7 +6,7 @@ use crate::{ use chrono::{DateTime, Days, Local, TimeZone, Utc}; use enum_map::{enum_map, EnumMap}; use lemmy_db_schema::{ - newtypes::{CommunityId, DbUrl, PersonId, PostId}, + newtypes::{CommunityId, DbUrl, InstanceId, PersonId, PostId}, source::{ comment::{Comment, CommentUpdateForm}, community::{Community, CommunityModerator, CommunityUpdateForm}, @@ -14,6 +14,7 @@ use lemmy_db_schema::{ email_verification::{EmailVerification, EmailVerificationForm}, images::{LocalImage, RemoteImage}, instance::Instance, + instance_block::InstanceBlock, local_site::LocalSite, local_site_rate_limit::LocalSiteRateLimit, local_site_url_blocklist::LocalSiteUrlBlocklist, @@ -275,14 +276,31 @@ async fn check_community_block( } } +/// Throws an error if a recipient has blocked an instance. #[tracing::instrument(skip_all)] -pub async fn check_person_community_block( +async fn check_instance_block( + instance_id: InstanceId, + person_id: PersonId, + pool: &mut DbPool<'_>, +) -> Result<(), LemmyError> { + let is_blocked = InstanceBlock::read(pool, person_id, instance_id).await?; + if is_blocked { + Err(LemmyErrorType::InstanceIsBlocked)? + } else { + Ok(()) + } +} + +#[tracing::instrument(skip_all)] +pub async fn check_person_instance_community_block( my_id: PersonId, potential_blocker_id: PersonId, + instance_id: InstanceId, community_id: CommunityId, pool: &mut DbPool<'_>, ) -> Result<(), LemmyError> { check_person_block(my_id, potential_blocker_id, pool).await?; + check_instance_block(instance_id, potential_blocker_id, pool).await?; check_community_block(community_id, potential_blocker_id, pool).await?; Ok(()) }