MastodonClient: merge searchParams

This commit is contained in:
Alex Gleason 2024-12-17 18:16:34 -06:00
parent 790564b74e
commit f0043813e6
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
1 changed files with 12 additions and 5 deletions

View File

@ -57,18 +57,25 @@ export class MastodonClient {
? opts.searchParams ? opts.searchParams
: Object : Object
.entries(opts.searchParams) .entries(opts.searchParams)
.reduce<[string, string][]>((acc, [key, value]) => { .reduce<URLSearchParams>((acc, [key, value]) => {
if (Array.isArray(value)) { if (Array.isArray(value)) {
for (const v of value) { for (const v of value) {
acc.push([`${key}[]`, String(v)]); acc.append(`${key}[]`, String(v));
} }
} else if (value !== undefined && value !== null) { } else if (value !== undefined && value !== null) {
acc.push([key, String(value)]); acc.append(key, String(value));
} }
return acc; return acc;
}, []); }, new URLSearchParams());
url.search = new URLSearchParams(params).toString(); // Merge search params.
// If a key exists in the URL, it will be replaced. Otherwise it will be added.
for (const key of params.keys()) {
url.searchParams.delete(key);
}
for (const [key, value] of params) {
url.searchParams.append(key, value);
}
} }
const headers = new Headers(opts.headers); const headers = new Headers(opts.headers);