Filter statuses at API level if possible

This commit is contained in:
Marcel Hellkamp 2023-07-31 16:18:27 +02:00
parent 4fd62c6efa
commit 08bf098611

View File

@ -17,9 +17,12 @@ export async function fetchPosts(cfg: Config): Promise<Post[]> {
// Load tags from all servers // Load tags from all servers
for (const domain of cfg.servers) { for (const domain of cfg.servers) {
const query: Record<string, any> = { limit: cfg.limit }
if(cfg.badWords.length) query.none = cfg.badWords.join(",")
if(!cfg.showText) query.only_media = "True"
for (const tag of cfg.tags) { for (const tag of cfg.tags) {
addTask(domain, async () => { addTask(domain, async () => {
return await fetchJson(domain, `api/v1/timelines/tag/${encodeURIComponent(tag)}`, { limit: cfg.limit.toString() }) return await fetchJson(domain, `api/v1/timelines/tag/${encodeURIComponent(tag)}`, query)
}) })
} }
} }
@ -38,6 +41,7 @@ export async function fetchPosts(cfg: Config): Promise<Post[]> {
const query: Record<string, any> = { limit: cfg.limit } const query: Record<string, any> = { limit: cfg.limit }
if (cfg.hideReplies) query.exclude_replies = "True" if (cfg.hideReplies) query.exclude_replies = "True"
if (cfg.hideBoosts) query.exclude_reblogs = "True" if (cfg.hideBoosts) query.exclude_reblogs = "True"
if (!cfg.showText) query.only_media = "True"
return await fetchJson(domain, `api/v1/accounts/${encodeURIComponent(localUser.id)}/statuses`, query) return await fetchJson(domain, `api/v1/accounts/${encodeURIComponent(localUser.id)}/statuses`, query)
}) })
} }
@ -59,6 +63,7 @@ export async function fetchPosts(cfg: Config): Promise<Post[]> {
const query: Record<string, any> = { limit: cfg.limit } const query: Record<string, any> = { limit: cfg.limit }
if (!cfg.loadPublic) query.remote = "True" if (!cfg.loadPublic) query.remote = "True"
if (!cfg.loadFederated) query.local = "True" if (!cfg.loadFederated) query.local = "True"
if (!cfg.showText) query.only_media = "True"
addTask(domain, async () => { addTask(domain, async () => {
return await fetchJson(domain, "api/v1/timelines/public", query) return await fetchJson(domain, "api/v1/timelines/public", query)
}) })