in src/components/activity/activity__create-model.ts [134:191]
function addMergeMetaDataToActivities(activities: ActivityGroup[] = []) {
let currentIndex = activities.length - 1;
let activity: ActivityGroup | null = null;
let prevActivity: ActivityGroup | null = null;
let lastGroup: ActivityGroup | null = {} as ActivityGroup;
reset();
while (currentIndex >= 0) {
activity = activities[currentIndex];
prevActivity = activities[currentIndex - 1];
activity.merged = isMergedActivity(activity, prevActivity);
if (prevActivity) {
if (activity.merged) {
prevActivity.root = true;
delete activity.root;
} else {
activity.root = true;
}
} else if (!activity.merged) {
activity.root = true;
}
if (lastGroup) {
activity.lastGroup = true;
if (!activity.merged && activity.root) {
lastGroup = null;
}
}
currentIndex--;
}
return activities;
function reset() {
activities.forEach(it => {
delete it.root;
delete it.merged;
delete it.lastGroup;
});
}
function isMergedActivity(activity: ActivityGroup, prevActivity: ActivityGroup) {
return !!(
prevActivity &&
activity.author.id === prevActivity.author.id &&
getActivityTypeId(activity) === getActivityTypeId(prevActivity) &&
((!activity.comment && !activity.vcs) ||
(!activity?.vcs?.pullRequest && !prevActivity?.vcs?.pullRequest))
);
}
function getActivityTypeId(item: Activity) {
return item && item.key;
}
}