diff --git a/app/Services/FollowerService.php b/app/Services/FollowerService.php index aacf71218..b9cd36723 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 2b253e233..3f051d66d 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 a5642e79e..a00e6e085 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);