pl-api: workaround for search getting into loop

Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
nicole mikołajczyk
2026-02-08 01:19:16 +01:00
parent 7d0422b507
commit 5d0677c425

View File

@ -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;
},
/**