From 6965614f0004120285db3aef7089ad10b6f519b6 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 6 Dec 2022 18:47:43 +0000 Subject: [PATCH] API: Only search for direct hit without offset --- src/Module/Api/Mastodon/Accounts/Search.php | 7 ++++--- src/Module/Api/Mastodon/Search.php | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Module/Api/Mastodon/Accounts/Search.php b/src/Module/Api/Mastodon/Accounts/Search.php index 616c478b4..d397cf27d 100644 --- a/src/Module/Api/Mastodon/Accounts/Search.php +++ b/src/Module/Api/Mastodon/Accounts/Search.php @@ -29,7 +29,7 @@ use Friendica\Module\BaseApi; use Friendica\Util\Network; /** - * @see https://docs.joinmastodon.org/methods/accounts/ + * @see https://docs.joinmastodon.org/methods/accounts/#search */ class Search extends BaseApi { @@ -44,13 +44,14 @@ class Search extends BaseApi $request = $this->getRequest([ 'q' => '', // What to search for 'limit' => 40, // Maximum number of results. Defaults to 40. + 'offset' => 0, // Offset in search results. Used for pagination. Defaults to 0. 'resolve' => false, // Attempt WebFinger lookup. Defaults to false. Use this when q is an exact address. 'following' => false, // Only who the user is following. Defaults to false. ], $request); $accounts = []; - if ((strrpos($request['q'], '@') > 0) || Network::isValidHttpUrl($request['q'])) { + if (($request['offset'] == 0) && (Network::isValidHttpUrl($request['q']) || (strrpos($request['q'], '@') > 0))) { $id = Contact::getIdForURL($request['q'], 0, $request['resolve'] ? null : false); if (!empty($id)) { @@ -59,7 +60,7 @@ class Search extends BaseApi } if (empty($accounts)) { - $contacts = Contact::searchByName($request['q'], '', $request['following'] ? $uid : 0, $request['limit']); + $contacts = Contact::searchByName($request['q'], '', $request['following'] ? $uid : 0, $request['limit'], $request['offset']); foreach ($contacts as $contact) { $accounts[] = DI::mstdnAccount()->createFromContactId($contact['id'], $uid); } diff --git a/src/Module/Api/Mastodon/Search.php b/src/Module/Api/Mastodon/Search.php index fc9467308..c95422dad 100644 --- a/src/Module/Api/Mastodon/Search.php +++ b/src/Module/Api/Mastodon/Search.php @@ -108,7 +108,7 @@ class Search extends BaseApi private static function searchAccounts(int $uid, string $q, bool $resolve, int $limit, int $offset, bool $following) { if ( - (strrpos($q, '@') > 0 || Network::isValidHttpUrl($q)) + ($offset == 0) && (strrpos($q, '@') > 0 || Network::isValidHttpUrl($q)) && $id = Contact::getIdForURL($q, 0, $resolve ? null : false) ) { return DI::mstdnAccount()->createFromContactId($id, $uid);