1
0
Fork 1
mirror of https://github.com/pixelfed/pixelfed.git synced 2024-12-26 09:46:49 +00:00

Update follower counts on follow_request approval

This commit is contained in:
Daniel Supernault 2022-06-11 05:16:38 -06:00
parent b4dda5776b
commit e97900a060
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7
2 changed files with 40 additions and 17 deletions

View file

@ -393,17 +393,27 @@ class AccountController extends Controller
switch ($action) { switch ($action) {
case 'accept': case 'accept':
$follow = new Follower(); $follow = new Follower();
$follow->profile_id = $follower->id; $follow->profile_id = $follower->id;
$follow->following_id = $pid; $follow->following_id = $pid;
$follow->save(); $follow->save();
if($follower->domain != null && $follower->private_key === null) { $profile = Profile::findOrFail($pid);
FollowAcceptPipeline::dispatch($followRequest); $profile->followers_count++;
} else { $profile->save();
FollowPipeline::dispatch($follow); AccountService::del($profile->id);
$followRequest->delete();
} $profile = Profile::findOrFail($follower->id);
$profile->following_count++;
$profile->save();
AccountService::del($profile->id);
if($follower->domain != null && $follower->private_key === null) {
FollowAcceptPipeline::dispatch($followRequest);
} else {
FollowPipeline::dispatch($follow);
$followRequest->delete();
}
break; break;
case 'reject': case 'reject':

View file

@ -1160,18 +1160,21 @@ class ApiV1Controller extends Controller
{ {
abort_if(!$request->user(), 403); abort_if(!$request->user(), 403);
$this->validate($request, [ $this->validate($request, [
'limit' => 'sometimes|integer|min:1|max:40' 'limit' => 'sometimes|integer|min:1|max:100'
]); ]);
$user = $request->user(); $user = $request->user();
$followRequests = FollowRequest::whereFollowingId($user->profile->id) $res = FollowRequest::whereFollowingId($user->profile->id)
->limit($request->input('limit', 40)) ->limit($request->input('limit', 40))
->pluck('follower_id'); ->pluck('follower_id')
->map(function($id) {
return AccountService::getMastodon($id, true);
})
->filter(function($acct) {
return $acct && isset($acct['id']);
})
->values();
$profiles = Profile::find($followRequests);
$resource = new Fractal\Resource\Collection($profiles, new AccountTransformer());
$res = $this->fractal->createData($resource)->toArray();
return $this->json($res); return $this->json($res);
} }
@ -1204,6 +1207,16 @@ class ApiV1Controller extends Controller
$follow->following_id = $pid; $follow->following_id = $pid;
$follow->save(); $follow->save();
$profile = Profile::findOrFail($pid);
$profile->followers_count++;
$profile->save();
AccountService::del($profile->id);
$profile = Profile::findOrFail($follower->id);
$profile->following_count++;
$profile->save();
AccountService::del($profile->id);
if($follower->domain != null && $follower->private_key === null) { if($follower->domain != null && $follower->private_key === null) {
FollowAcceptPipeline::dispatch($followRequest); FollowAcceptPipeline::dispatch($followRequest);
} else { } else {