From e75de41eace0b1b061238ef59c8e6ba6f1953237 Mon Sep 17 00:00:00 2001 From: Michael Barrett Date: Tue, 22 Oct 2024 14:42:43 +0100 Subject: [PATCH] Filtered out non-follower activities on home feed of the `admin-x-activitypub` app (#21362) refs [AP-477](https://linear.app/ghost/issue/AP-477/incorrect-posts-in-home-feed) Filtered out non-follower activities on home feed of the `admin-x-activitypub` app --- apps/admin-x-activitypub/src/api/activitypub.ts | 4 ++++ apps/admin-x-activitypub/src/components/Inbox.tsx | 1 + apps/admin-x-activitypub/src/hooks/useActivityPubQueries.ts | 4 +++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/admin-x-activitypub/src/api/activitypub.ts b/apps/admin-x-activitypub/src/api/activitypub.ts index 977c3ef75a..1a95d1791c 100644 --- a/apps/admin-x-activitypub/src/api/activitypub.ts +++ b/apps/admin-x-activitypub/src/api/activitypub.ts @@ -245,6 +245,7 @@ export class ActivityPubAPI { async getActivities( includeOwn: boolean = false, includeReplies: boolean = false, + excludeNonFollowers: boolean = false, filter: {type?: string[]} | null = null, cursor?: string ): Promise<{data: Activity[], nextCursor: string | null}> { @@ -258,6 +259,9 @@ export class ActivityPubAPI { if (includeReplies) { url.searchParams.set('includeReplies', includeReplies.toString()); } + if (excludeNonFollowers) { + url.searchParams.set('excludeNonFollowers', excludeNonFollowers.toString()); + } if (filter) { url.searchParams.set('filter', JSON.stringify(filter)); } diff --git a/apps/admin-x-activitypub/src/components/Inbox.tsx b/apps/admin-x-activitypub/src/components/Inbox.tsx index 4045c2241a..973078fea0 100644 --- a/apps/admin-x-activitypub/src/components/Inbox.tsx +++ b/apps/admin-x-activitypub/src/components/Inbox.tsx @@ -28,6 +28,7 @@ const Inbox: React.FC = ({}) => { } = useActivitiesForUser({ handle: 'index', includeReplies: true, + excludeNonFollowers: true, filter: { type: ['Create:Article:notReply', 'Create:Note:notReply', 'Announce:Note'] } diff --git a/apps/admin-x-activitypub/src/hooks/useActivityPubQueries.ts b/apps/admin-x-activitypub/src/hooks/useActivityPubQueries.ts index da35eb02d6..a810465d2f 100644 --- a/apps/admin-x-activitypub/src/hooks/useActivityPubQueries.ts +++ b/apps/admin-x-activitypub/src/hooks/useActivityPubQueries.ts @@ -218,11 +218,13 @@ export function useActivitiesForUser({ handle, includeOwn = false, includeReplies = false, + excludeNonFollowers = false, filter = null }: { handle: string; includeOwn?: boolean; includeReplies?: boolean; + excludeNonFollowers?: boolean; filter?: {type?: string[]} | null; }) { return useInfiniteQuery({ @@ -230,7 +232,7 @@ export function useActivitiesForUser({ async queryFn({pageParam}: {pageParam?: string}) { const siteUrl = await getSiteUrl(); const api = createActivityPubAPI(handle, siteUrl); - return api.getActivities(includeOwn, includeReplies, filter, pageParam); + return api.getActivities(includeOwn, includeReplies, excludeNonFollowers, filter, pageParam); }, getNextPageParam(prevPage) { return prevPage.nextCursor;