diff --git a/ghost/admin/app/components/members-activity/event-type-filter.js b/ghost/admin/app/components/members-activity/event-type-filter.js index 10eb973383..e387f56c30 100644 --- a/ghost/admin/app/components/members-activity/event-type-filter.js +++ b/ghost/admin/app/components/members-activity/event-type-filter.js @@ -1,5 +1,6 @@ import Component from '@glimmer/component'; import {action} from '@ember/object'; +import {inject as service} from '@ember/service'; const ALL_EVENT_TYPES = [ {event: 'signup_event', icon: 'event-filter-signup', name: 'Signups'}, @@ -13,11 +14,19 @@ const ALL_EVENT_TYPES = [ ]; export default class MembersActivityEventTypeFilter extends Component { + @service settings; + @service feature; + get availableEventTypes() { + const extended = [...ALL_EVENT_TYPES]; + if (this.feature.comments && this.settings.get('commentsEnabled') !== 'off') { + extended.push({event: 'comment_event', icon: 'event-comment', name: 'Comments'}); + } + if (this.args.hiddenEvents?.length) { - return ALL_EVENT_TYPES.filter(t => !this.args.hiddenEvents.includes(t.event)); + return extended.filter(t => !this.args.hiddenEvents.includes(t.event)); } else { - return ALL_EVENT_TYPES; + return extended; } } diff --git a/ghost/admin/app/helpers/members-event-filter.js b/ghost/admin/app/helpers/members-event-filter.js index aa08a77c84..b0d569673b 100644 --- a/ghost/admin/app/helpers/members-event-filter.js +++ b/ghost/admin/app/helpers/members-event-filter.js @@ -9,6 +9,7 @@ export const NEWSLETTER_EVENTS = ['newsletter_event']; @classic export default class MembersEventFilter extends Helper { @service settings; + @service feature; compute( positionalParams, @@ -19,6 +20,9 @@ export default class MembersEventFilter extends Helper { if (this.settings.get('editorDefaultEmailRecipients') === 'disabled') { [...EMAIL_EVENTS, ...NEWSLETTER_EVENTS].forEach(type => excludedEventsSet.add(type)); } + if (!this.feature.comments || this.settings.get('commentsEnabled') === 'off') { + excludedEventsSet.add('comment_event'); + } if (excludeEmailEvents) { EMAIL_EVENTS.forEach(type => excludedEventsSet.add(type)); diff --git a/ghost/admin/app/helpers/parse-member-event.js b/ghost/admin/app/helpers/parse-member-event.js index 71f27b4588..c0ad957940 100644 --- a/ghost/admin/app/helpers/parse-member-event.js +++ b/ghost/admin/app/helpers/parse-member-event.js @@ -68,6 +68,10 @@ function getIcon(event) { icon = 'email-delivery-failed'; } + if (event.type === 'comment_event') { + icon = 'comment'; + } + return 'event-' + icon; } @@ -123,6 +127,13 @@ function getAction(event) { if (event.type === 'email_failed_event') { return 'failed to receive'; } + + if (event.type === 'comment_event') { + if (event.data.parent_id) { + return 'replied on'; + } + return 'commented on'; + } } function getObject(event, hasMultipleNewsletters) { @@ -141,6 +152,18 @@ function getObject(event, hasMultipleNewsletters) { return 'an email'; } + if (event.type === 'subscription_event') { + return 'their subscription'; + } + + if (event.type === 'comment_event') { + if (event.data.parent_id) { + return 'a comment'; + } + + return 'a post'; + } + return ''; } @@ -154,5 +177,12 @@ function getInfo(event) { let symbol = getSymbol(event.data.currency); return `(MRR ${sign}${symbol}${Math.abs(mrrDelta)})`; } + + // TODO: we can include the post title + /*if (event.type === 'comment_event') { + if (event.data.post) { + return event.data.post.title; + } + }*/ return; }