Merge pull request #4163 from pixelfed/staging

Update SearchApiV2Service, improve account search results
This commit is contained in:
daniel 2023-02-07 23:09:57 -07:00 committed by GitHub
commit 6377fa07d3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -88,16 +88,17 @@ class SearchApiV2Service
$offset = $this->query->input('offset') ?? 0; $offset = $this->query->input('offset') ?? 0;
$rawQuery = $initalQuery ? $initalQuery : $this->query->input('q'); $rawQuery = $initalQuery ? $initalQuery : $this->query->input('q');
$query = $rawQuery . '%'; $query = $rawQuery . '%';
if(Str::substrCount($rawQuery, '@') >= 1 && Str::contains($rawQuery, config('pixelfed.domain.app'))) { $webfingerQuery = $query;
$deliminatorCount = Str::substrCount($rawQuery, '@'); if(Str::substrCount($rawQuery, '@') == 1 && substr($rawQuery, 0, 1) !== '@') {
$query = explode('@', $rawQuery)[$deliminatorCount == 1 ? 0 : 1]; $query = '@' . $query;
} }
if(Str::substrCount($rawQuery, '@') == 1 && substr($rawQuery, 0, 1) == '@') { if(substr($webfingerQuery, 0, 1) !== '@') {
$query = substr($rawQuery, 1) . '%'; $webfingerQuery = '@' . $webfingerQuery;
} }
$banned = InstanceService::getBannedDomains(); $banned = InstanceService::getBannedDomains();
$results = Profile::select('username', 'id', 'followers_count', 'domain') $results = Profile::select('username', 'id', 'followers_count', 'domain')
->where('username', 'like', $query) ->where('username', 'like', $query)
->orWhere('webfinger', 'like', $webfingerQuery)
->orderByDesc('profiles.followers_count') ->orderByDesc('profiles.followers_count')
->offset($offset) ->offset($offset)
->limit($limit) ->limit($limit)