pl-api: workaround for search getting into loop
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
@ -3636,7 +3636,21 @@ class PlApiClient {
|
|||||||
search: async (q: string, params?: SearchParams, meta?: RequestMeta) => {
|
search: async (q: string, params?: SearchParams, meta?: RequestMeta) => {
|
||||||
const response = await this.request('/api/v2/search', { ...meta, params: { ...params, q } });
|
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;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user