From 5d0677c425dd7e0fa19cb647559fcb040a3eaca0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?nicole=20miko=C5=82ajczyk?= Date: Sun, 8 Feb 2026 01:19:16 +0100 Subject: [PATCH] pl-api: workaround for search getting into loop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: nicole mikołajczyk --- packages/pl-api/lib/client.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/pl-api/lib/client.ts b/packages/pl-api/lib/client.ts index 6eded1f83..5cbca163e 100644 --- a/packages/pl-api/lib/client.ts +++ b/packages/pl-api/lib/client.ts @@ -3636,7 +3636,21 @@ class PlApiClient { search: async (q: string, params?: SearchParams, meta?: RequestMeta) => { const response = await this.request('/api/v2/search', { ...meta, params: { ...params, q } }); - return v.parse(searchSchema, response.json); + const parsedSearch = v.parse(searchSchema, response.json); + + // A workaround for Pleroma/Akkoma getting into a loop of returning the same account/status when resolve === true. + if (params && params.resolve && params.offset && params.offset > 0) { + const firstAccount = parsedSearch.accounts[0]; + if (firstAccount && [firstAccount.url, firstAccount.acct].includes(q)) { + parsedSearch.accounts = parsedSearch.accounts.slice(1); + } + const firstStatus = parsedSearch.statuses[0]; + if (firstStatus && [firstStatus.uri, firstStatus.url].includes(q)) { + parsedSearch.statuses = parsedSearch.statuses.slice(1); + } + } + + return parsedSearch; }, /**