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:
parent
e003c10e8b
commit
58c9c1c649
1 changed files with 24 additions and 1 deletions
|
@ -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() {
|
||||
|
|
Loading…
Add table
Reference in a new issue