diff --git a/app/services/post_action_notifier.rb b/app/services/post_action_notifier.rb index 39dd205db00..698af277677 100644 --- a/app/services/post_action_notifier.rb +++ b/app/services/post_action_notifier.rb @@ -89,9 +89,14 @@ class PostActionNotifier user_liked_consolidated_notification = user_notifications .where( - "created_at > ? AND notification_type = ?", + " + created_at > ? AND + notification_type = ? AND + data::json ->> 'display_username' = ? + ", consolidation_window, - Notification.types[:liked_consolidated] + Notification.types[:liked_consolidated], + post_action.user.username_lower ) .first diff --git a/spec/models/post_action_spec.rb b/spec/models/post_action_spec.rb index b415c3e602f..de18c4659b6 100644 --- a/spec/models/post_action_spec.rb +++ b/spec/models/post_action_spec.rb @@ -346,6 +346,21 @@ describe PostAction do expect(notification.read).to eq(false) expect(data["count"]).to eq(6) + # Like from a different user shouldn't be consolidated + expect do + PostAction.act( + Fabricate(:user), + Fabricate(:post, user: likee), + PostActionType.types[:like] + ) + end.to change { likee.reload.notifications.count }.by(1) + + notification = likee.notifications.last + + expect(notification.notification_type).to eq( + Notification.types[:liked] + ) + freeze_time( SiteSetting.likes_notification_consolidation_window_mins.minutes.since )