From b0a559bf0ece06d08545f389b336ad02450c6a69 Mon Sep 17 00:00:00 2001 From: Jackie Jou Date: Wed, 10 Jun 2026 15:26:15 -0700 Subject: [PATCH] fix(activity-feed-v2): show empty state when feed contains only version rows The /file_activities endpoint returns at least one version row per upload, so a fresh file with no comments, tasks, or annotations rendered a single version row instead of the empty state. Suppress version-only feeds so the shared activity-feed empty state encourages comments. Filter-active cases are skipped so a "no results" view does not collapse into "no comments yet". --- .../activity-feed-v2/ActivityFeedV2.tsx | 7 ++++- .../__tests__/ActivityFeedV2.test.tsx | 27 ++++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx b/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx index 9fb1a5a516..7ed9e1b5ac 100644 --- a/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx +++ b/src/elements/content-sidebar/activity-feed-v2/ActivityFeedV2.tsx @@ -214,7 +214,7 @@ const ActivityFeedV2 = ({ }, [currentUserId, feedItems]); const filteredItems = React.useMemo(() => { - return transformedItems.filter(item => { + const filtered = transformedItems.filter(item => { if ((item.type === 'comment' || item.type === 'annotation') && item.isResolved && !showResolved) { return false; } @@ -240,6 +240,11 @@ const ActivityFeedV2 = ({ } return true; }); + const filtersDroppedItems = filtered.length < transformedItems.length; + if (!filtersDroppedItems && filtered.every(item => item.type === 'version')) { + return []; + } + return filtered; }, [currentUserId, showOnlyMentionsMe, showResolved, transformedItems]); React.useEffect(() => { diff --git a/src/elements/content-sidebar/activity-feed-v2/__tests__/ActivityFeedV2.test.tsx b/src/elements/content-sidebar/activity-feed-v2/__tests__/ActivityFeedV2.test.tsx index 9b697a98f8..9b77f8e5fd 100644 --- a/src/elements/content-sidebar/activity-feed-v2/__tests__/ActivityFeedV2.test.tsx +++ b/src/elements/content-sidebar/activity-feed-v2/__tests__/ActivityFeedV2.test.tsx @@ -223,7 +223,18 @@ describe('elements/content-sidebar/activity-feed-v2/ActivityFeedV2', () => { expect(screen.getByTestId('task-task-1')).toBeVisible(); }); - test('should render version feed items', () => { + test('should render version feed items alongside other items', () => { + render( + , + ); + + expect(screen.getByTestId('version-version-1')).toBeVisible(); + }); + + test('should suppress version-only feeds so the empty state can render', () => { render( { />, ); + expect(screen.queryByTestId('version-version-1')).not.toBeInTheDocument(); + expect(screen.getByTestId('activity-feed-list').children).toHaveLength(0); + }); + + test('should keep version rows when filters dropped other items', () => { + const resolvedComment = { ...mockComment, id: 'resolved-1', status: 'resolved' }; + render( + , + ); + + expect(screen.queryByTestId('threaded-annotation-resolved-1')).not.toBeInTheDocument(); expect(screen.getByTestId('version-version-1')).toBeVisible(); });