Update Discover
This commit is contained in:
parent
7494d97bbd
commit
1ca76b3a3c
5 changed files with 104 additions and 25 deletions
|
@ -121,6 +121,7 @@ class InternalApiController extends Controller
|
|||
return response()->json($notifications, 200, [], JSON_PRETTY_PRINT);
|
||||
}
|
||||
|
||||
// deprecated
|
||||
public function discover(Request $request)
|
||||
{
|
||||
$profile = Auth::user()->profile;
|
||||
|
@ -176,6 +177,83 @@ class InternalApiController extends Controller
|
|||
];
|
||||
return response()->json($res, 200, [], JSON_PRETTY_PRINT);
|
||||
}
|
||||
|
||||
public function discoverPeople(Request $request)
|
||||
{
|
||||
$profile = Auth::user()->profile;
|
||||
$pid = $profile->id;
|
||||
$following = Cache::remember('feature:discover:following:'.$pid, 60, function() use ($pid) {
|
||||
return Follower::whereProfileId($pid)->pluck('following_id')->toArray();
|
||||
});
|
||||
$filters = Cache::remember("user:filter:list:$pid", 60, function() use($pid) {
|
||||
return UserFilter::whereUserId($pid)
|
||||
->whereFilterableType('App\Profile')
|
||||
->whereIn('filter_type', ['mute', 'block'])
|
||||
->pluck('filterable_id')->toArray();
|
||||
});
|
||||
$following = array_merge($following, $filters);
|
||||
|
||||
$people = Profile::select('id', 'name', 'username')
|
||||
->with('avatar')
|
||||
->orderByRaw('rand()')
|
||||
->whereHas('statuses')
|
||||
->whereNull('domain')
|
||||
->whereNotIn('id', $following)
|
||||
->whereIsPrivate(false)
|
||||
->take(3)
|
||||
->get();
|
||||
|
||||
$res = [
|
||||
'people' => $people->map(function($profile) {
|
||||
return [
|
||||
'id' => $profile->id,
|
||||
'avatar' => $profile->avatarUrl(),
|
||||
'name' => $profile->name,
|
||||
'username' => $profile->username,
|
||||
'url' => $profile->url(),
|
||||
];
|
||||
})
|
||||
];
|
||||
return response()->json($res, 200, [], JSON_PRETTY_PRINT);
|
||||
}
|
||||
|
||||
public function discoverPosts(Request $request)
|
||||
{
|
||||
$profile = Auth::user()->profile;
|
||||
$pid = $profile->id;
|
||||
$following = Cache::remember('feature:discover:following:'.$pid, 60, function() use ($pid) {
|
||||
return Follower::whereProfileId($pid)->pluck('following_id')->toArray();
|
||||
});
|
||||
$filters = Cache::remember("user:filter:list:$pid", 60, function() use($pid) {
|
||||
return UserFilter::whereUserId($pid)
|
||||
->whereFilterableType('App\Profile')
|
||||
->whereIn('filter_type', ['mute', 'block'])
|
||||
->pluck('filterable_id')->toArray();
|
||||
});
|
||||
$following = array_merge($following, $filters);
|
||||
|
||||
$posts = Status::select('id', 'caption', 'profile_id')
|
||||
->whereNull('in_reply_to_id')
|
||||
->whereNull('reblog_of_id')
|
||||
->whereIsNsfw(false)
|
||||
->whereVisibility('public')
|
||||
->whereNotIn('profile_id', $following)
|
||||
->with('media')
|
||||
->orderBy('created_at', 'desc')
|
||||
->take(21)
|
||||
->get();
|
||||
|
||||
$res = [
|
||||
'posts' => $posts->map(function($post) {
|
||||
return [
|
||||
'url' => $post->url(),
|
||||
'thumb' => $post->thumb(),
|
||||
];
|
||||
})
|
||||
];
|
||||
return response()->json($res);
|
||||
}
|
||||
|
||||
public function directMessage(Request $request, $profileId, $threadId)
|
||||
{
|
||||
$profile = Auth::user()->profile;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue