From 1349aa351a195fdf0d179c27a8057257ca37e255 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Thu, 4 Apr 2024 08:44:15 -0400 Subject: [PATCH] Fixing bug where comment replies wouldn't be sent to blocked instances. - Instance blocks should only affect communities, not comments. - Fixes #4590 --- crates/api_common/src/build_response.rs | 8 +++----- crates/api_common/src/utils.rs | 22 ++-------------------- 2 files changed, 5 insertions(+), 25 deletions(-) diff --git a/crates/api_common/src/build_response.rs b/crates/api_common/src/build_response.rs index 19e0bb46b..4ac5ad4b0 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_instance_community_block, + check_person_community_block, get_interface_language, is_mod_or_admin, send_email_to_user, @@ -149,10 +149,9 @@ 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_instance_community_block( + let check_blocks = check_person_community_block( person.id, parent_creator_id, - person.instance_id, community_id, &mut context.pool(), ) @@ -194,10 +193,9 @@ pub async fn send_local_notifs( } } } else { - let check_blocks = check_person_instance_community_block( + let check_blocks = check_person_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 ad416ffbb..03b56d6f7 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, InstanceId, PersonId, PostId}, + newtypes::{CommunityId, DbUrl, PersonId, PostId}, source::{ comment::{Comment, CommentUpdateForm}, community::{Community, CommunityModerator, CommunityUpdateForm}, @@ -14,7 +14,6 @@ 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, @@ -276,31 +275,14 @@ async fn check_community_block( } } -/// Throws an error if a recipient has blocked an instance. #[tracing::instrument(skip_all)] -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( +pub async fn check_person_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(()) }