FIX: Do not publish post for PM topic tracking if not new for user. (#14469)
This commit is contained in:
parent
9998090e5b
commit
a1745e05ae
|
@ -169,7 +169,7 @@ const PrivateMessageTopicTrackingState = EmberObject.extend({
|
||||||
[INBOX_FILTER, ARCHIVE_FILTER].includes(this.filter) &&
|
[INBOX_FILTER, ARCHIVE_FILTER].includes(this.filter) &&
|
||||||
(!message.payload.acting_user_id ||
|
(!message.payload.acting_user_id ||
|
||||||
message.payload.acting_user_id !== this.currentUser.id) &&
|
message.payload.acting_user_id !== this.currentUser.id) &&
|
||||||
(this.inbox === "all" || this._displayMessageForGroupInbox(message))
|
this._displayMessageForGroupInbox(message)
|
||||||
) {
|
) {
|
||||||
this._notifyIncoming(message.topic_id);
|
this._notifyIncoming(message.topic_id);
|
||||||
}
|
}
|
||||||
|
@ -187,7 +187,6 @@ const PrivateMessageTopicTrackingState = EmberObject.extend({
|
||||||
|
|
||||||
_shouldDisplayMessageForInbox(message) {
|
_shouldDisplayMessageForInbox(message) {
|
||||||
return (
|
return (
|
||||||
this.inbox === "all" ||
|
|
||||||
this._displayMessageForGroupInbox(message) ||
|
this._displayMessageForGroupInbox(message) ||
|
||||||
(this.inbox === "user" &&
|
(this.inbox === "user" &&
|
||||||
(message.payload.group_ids.length === 0 ||
|
(message.payload.group_ids.length === 0 ||
|
||||||
|
|
|
@ -98,13 +98,14 @@ class PrivateMessageTopicTrackingState
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.publish_unread(post)
|
def self.publish_unread(post)
|
||||||
return unless post.topic.private_message?
|
topic = post.topic
|
||||||
|
return unless topic.private_message?
|
||||||
|
|
||||||
scope = TopicUser
|
scope = TopicUser
|
||||||
.tracking(post.topic_id)
|
.tracking(post.topic_id)
|
||||||
.includes(user: :user_stat)
|
.includes(user: [:user_stat, :user_option])
|
||||||
|
|
||||||
allowed_group_ids = post.topic.allowed_groups.pluck(:id)
|
allowed_group_ids = topic.allowed_groups.pluck(:id)
|
||||||
|
|
||||||
group_ids =
|
group_ids =
|
||||||
if post.post_type == Post.types[:whisper]
|
if post.post_type == Post.types[:whisper]
|
||||||
|
@ -123,6 +124,12 @@ class PrivateMessageTopicTrackingState
|
||||||
.select([:user_id, :last_read_post_number, :notification_level])
|
.select([:user_id, :last_read_post_number, :notification_level])
|
||||||
.each do |tu|
|
.each do |tu|
|
||||||
|
|
||||||
|
if tu.last_read_post_number.nil? &&
|
||||||
|
topic.created_at < tu.user.user_option.treat_as_new_topic_start_date
|
||||||
|
|
||||||
|
next
|
||||||
|
end
|
||||||
|
|
||||||
message = {
|
message = {
|
||||||
topic_id: post.topic_id,
|
topic_id: post.topic_id,
|
||||||
message_type: UNREAD_MESSAGE_TYPE,
|
message_type: UNREAD_MESSAGE_TYPE,
|
||||||
|
|
|
@ -166,6 +166,17 @@ describe PrivateMessageTopicTrackingState do
|
||||||
.to eq(NotificationLevels.all[:watching])
|
.to eq(NotificationLevels.all[:watching])
|
||||||
expect(data['payload']['group_ids']).to eq([])
|
expect(data['payload']['group_ids']).to eq([])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'does not publish message_bus message if post in topic is not new for user' do
|
||||||
|
group_message.update!(created_at: 3.days.ago)
|
||||||
|
user_2.user_option.update!(new_topic_duration_minutes: 2.days.minutes)
|
||||||
|
|
||||||
|
messages = MessageBus.track_publish do
|
||||||
|
described_class.publish_unread(group_message.first_post)
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(messages).to eq([])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '.publish_group_archived' do
|
describe '.publish_group_archived' do
|
||||||
|
|
Loading…
Reference in New Issue