Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ export type ActivityFeedItem =
| {
activity: GroupActivity;
type: 'activity';
actorActivity?: GroupActivity;
}
| CollapsedSeerActivity;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,12 @@ export function ActivityLine({item, group, timestampUnitStyle}: ActivityLineProp
const timestamp = (
<TimeSince date={activity.dateCreated} unitStyle={timestampUnitStyle} />
);
const actorActivity =
item.type === GroupActivityType.SEER_ITERATION_COMPLETED
? item.startedActivity
: activity;
let actorActivity = activity;
if (item.type === GroupActivityType.SEER_ITERATION_COMPLETED) {
actorActivity = item.startedActivity;
} else if (item.type === 'activity' && item.actorActivity) {
actorActivity = item.actorActivity;
}

return (
<ActivityLineRow>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1609,6 +1609,7 @@ describe('ActivitySection', () => {
);

expect(await screen.findByText('Referenced in pull request')).toBeInTheDocument();
expect(screen.getByRole('img', {name: 'Seer activity'})).toBeInTheDocument();
expect(screen.getAllByRole('link', {name: `#${pullRequest.id}`})).toHaveLength(1);
});

Expand Down
39 changes: 27 additions & 12 deletions static/app/views/issueDetails/activitySection/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -137,14 +137,24 @@ function isDuplicatePullRequestActivity(
}
}

function removeAdjacentDuplicatePullRequestActivities(
activities: GroupActivity[]
): GroupActivity[] {
return activities.filter(
(activity, index) =>
!isDuplicatePullRequestActivity(activity, activities[index - 1]) &&
!isDuplicatePullRequestActivity(activity, activities[index + 1])
);
function removeAdjacentDuplicatePullRequestActivities(activities: GroupActivity[]): {
activities: GroupActivity[];
actorActivityById: Map<string, GroupActivity>;
} {
const actorActivityById = new Map<string, GroupActivity>();
const filteredActivities = activities.filter((activity, index) => {
const duplicateActivity = [activities[index - 1], activities[index + 1]].find(
adjacentActivity => isDuplicatePullRequestActivity(activity, adjacentActivity)
);

if (activity.type === GroupActivityType.SEER_PR_CREATED && duplicateActivity) {
actorActivityById.set(duplicateActivity.id, activity);
}

return !duplicateActivity;
});

return {activities: filteredActivities, actorActivityById};
}

export function ActivitySection({
Expand Down Expand Up @@ -203,10 +213,15 @@ export function ActivitySection({
? group.activity
: group.activity.filter(item => !SEER_ACTIVITY_TYPES.has(item.type));

const filteredActivities = removeAdjacentDuplicatePullRequestActivities(
visibleActivities
).filter(item => !filterComments || item.type === GroupActivityType.NOTE);
const displayedActivities = collapseSeerActivityPairs(filteredActivities);
const {activities: deduplicatedActivities, actorActivityById} =
removeAdjacentDuplicatePullRequestActivities(visibleActivities);
const filteredActivities = deduplicatedActivities.filter(
item => !filterComments || item.type === GroupActivityType.NOTE
);
const displayedActivities = collapseSeerActivityPairs(filteredActivities).map(item => {
const actorActivity = actorActivityById.get(item.activity.id);
return item.type === 'activity' && actorActivity ? {...item, actorActivity} : item;
});
const inputVariant = variant === 'sidebar' ? 'compact' : 'full';
const timestampUnitStyle = variant === 'sidebar' ? 'short' : undefined;

Expand Down
Loading