actor = $actor; $this->target = $target; } /** * Execute the job. * * @return void */ public function handle() { $actor = $this->actor; $target = $this->target; $actorProfile = Profile::find($actor); if (! $actorProfile) { return; } $targetProfile = Profile::find($target); if (! $targetProfile) { return; } FeedUnfollowPipeline::dispatch($actor, $target)->onQueue('follow'); FollowerService::remove($actor, $target); $actorProfileSync = Cache::get(FollowerService::FOLLOWING_SYNC_KEY.$actor); if (! $actorProfileSync) { FollowServiceWarmCache::dispatch($actor)->onQueue('low'); } else { if ($actorProfile->following_count) { $actorProfile->decrement('following_count'); } else { $count = Follower::whereProfileId($actor)->count(); $actorProfile->following_count = $count; $actorProfile->save(); } Cache::put(FollowerService::FOLLOWING_SYNC_KEY.$actor, 1, 604800); AccountService::del($actor); } $targetProfileSync = Cache::get(FollowerService::FOLLOWERS_SYNC_KEY.$target); if (! $targetProfileSync) { FollowServiceWarmCache::dispatch($target)->onQueue('low'); } else { if ($targetProfile->followers_count) { $targetProfile->decrement('followers_count'); } else { $count = Follower::whereFollowingId($target)->count(); $targetProfile->followers_count = $count; $targetProfile->save(); } Cache::put(FollowerService::FOLLOWERS_SYNC_KEY.$target, 1, 604800); AccountService::del($target); } if ($targetProfile->domain == null) { Notification::withTrashed() ->whereProfileId($target) ->whereAction('follow') ->whereActorId($actor) ->whereItemId($target) ->whereItemType('App\Profile') ->get() ->each(function ($n) { NotificationService::del($n->profile_id, $n->id); $n->forceDelete(); }); } if ($actorProfile->domain == null && config('instance.timeline.home.cached')) { Cache::forget('pf:timelines:home:'.$actor); } FollowRequest::whereFollowingId($target) ->whereFollowerId($actor) ->delete(); AccountService::del($target); AccountService::del($actor); } }