0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-10 23:36:14 -05:00

Cleaned newsletter subscription events from timeline

refs https://github.com/TryGhost/Team/issues/469

In order to reduce noise, we want to only display newsletter
subscription events which are not likely to be the result of a member
signup. The approach we've taken is to remove any newsletter
subscription (not unsubscription) event, if when sorted in chronological
order, it is to reside next to a signup event for the same member.

An improvement to this approach might be to add some kind of transaction
id  to events which would allow us to group together events which should
be considered to have happened simultaneously.
This commit is contained in:
Fabien O'Carroll 2021-03-05 12:38:56 +00:00
parent e003c10e8b
commit 58c9c1c649

View file

@ -126,7 +126,30 @@ module.exports = class EventRepository {
return allEvents.sort((a, b) => {
return new Date(b.data.created_at) - new Date(a.data.created_at);
}).slice(0, options.limit);
}).reduce((memo, event, i) => {
if (event.type === 'newsletter_event' && event.data.subscribed) {
const previousEvent = allEvents[i - 1];
const nextEvent = allEvents[i + 1];
const currentMember = event.data.member_id;
if (previousEvent && previousEvent.type === 'signup_event') {
const previousMember = previousEvent.data.member_id;
if (currentMember === previousMember) {
return memo;
}
}
if (nextEvent && nextEvent.type === 'signup_event') {
const nextMember = nextEvent.data.member_id;
if (currentMember === nextMember) {
return memo;
}
}
}
return memo.concat(event);
}, []).slice(0, options.limit);
}
async getSubscriptions() {