From e0c3dae32447721fc025709aedde44e78feb3a13 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 31 Dec 2022 06:25:43 -0700 Subject: [PATCH] Update profile audience to filter blocked instances --- app/Services/FollowerService.php | 32 ++++++++++++++++++++++------ app/Services/InstanceService.php | 6 +++--- app/Services/RelationshipService.php | 4 ++-- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/app/Services/FollowerService.php b/app/Services/FollowerService.php index aacf7121..b9cd3672 100644 --- a/app/Services/FollowerService.php +++ b/app/Services/FollowerService.php @@ -34,8 +34,8 @@ class FollowerService { Redis::zrem(self::FOLLOWING_KEY . $actor, $target); Redis::zrem(self::FOLLOWERS_KEY . $target, $actor); - Cache::forget('pf:services:follow:audience:' . $actor); - Cache::forget('pf:services:follow:audience:' . $target); + Cache::forget('pf:services:follower:audience:' . $actor); + Cache::forget('pf:services:follower:audience:' . $target); AccountService::del($actor); AccountService::del($target); RelationshipService::refresh($actor, $target); @@ -151,9 +151,9 @@ class FollowerService protected function getAudienceInboxes($pid, $scope = null) { - $key = 'pf:services:follow:audience:' . $pid; - return Cache::remember($key, 86400, function() use($pid) { - $profile = Profile::find($pid); + $key = 'pf:services:follower:audience:' . $pid; + $domains = Cache::remember($key, 432000, function() use($pid) { + $profile = Profile::whereNull(['status', 'domain'])->find($pid); if(!$profile) { return []; } @@ -165,9 +165,27 @@ class FollowerService }) ->filter() ->unique() - ->values() - ->toArray(); + ->values(); }); + + if(!$domains || !$domains->count()) { + return []; + } + + $banned = InstanceService::getBannedDomains(); + + if(!$banned || count($banned) === 0) { + return $domains->toArray(); + } + + $res = $domains->filter(function($domain) use($banned) { + $parsed = parse_url($domain, PHP_URL_HOST); + return !in_array($parsed, $banned); + }) + ->values() + ->toArray(); + + return $res; } public static function mutualCount($pid, $mid) diff --git a/app/Services/InstanceService.php b/app/Services/InstanceService.php index 2b253e23..3f051d66 100644 --- a/app/Services/InstanceService.php +++ b/app/Services/InstanceService.php @@ -20,21 +20,21 @@ class InstanceService public static function getBannedDomains() { - return Cache::remember(self::CACHE_KEY_BANNED_DOMAINS, now()->addHours(12), function() { + return Cache::remember(self::CACHE_KEY_BANNED_DOMAINS, 1209600, function() { return Instance::whereBanned(true)->pluck('domain')->toArray(); }); } public static function getUnlistedDomains() { - return Cache::remember(self::CACHE_KEY_UNLISTED_DOMAINS, now()->addHours(12), function() { + return Cache::remember(self::CACHE_KEY_UNLISTED_DOMAINS, 1209600, function() { return Instance::whereUnlisted(true)->pluck('domain')->toArray(); }); } public static function getNsfwDomains() { - return Cache::remember(self::CACHE_KEY_NSFW_DOMAINS, now()->addHours(12), function() { + return Cache::remember(self::CACHE_KEY_NSFW_DOMAINS, 1209600, function() { return Instance::whereAutoCw(true)->pluck('domain')->toArray(); }); } diff --git a/app/Services/RelationshipService.php b/app/Services/RelationshipService.php index a5642e79..a00e6e08 100644 --- a/app/Services/RelationshipService.php +++ b/app/Services/RelationshipService.php @@ -57,8 +57,8 @@ class RelationshipService public static function refresh($aid, $tid) { - Cache::forget('pf:services:follow:audience:' . $aid); - Cache::forget('pf:services:follow:audience:' . $tid); + Cache::forget('pf:services:follower:audience:' . $aid); + Cache::forget('pf:services:follower:audience:' . $tid); self::delete($tid, $aid); self::delete($aid, $tid); self::get($tid, $aid);