mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Live updates for user's messages page.
https://meta.discourse.org/t/group-inbox-messages-not-updated-for-new-posts/38189
This commit is contained in:
@@ -2,7 +2,9 @@ class UserArchivedMessage < ActiveRecord::Base
|
||||
belongs_to :user
|
||||
belongs_to :topic
|
||||
|
||||
def self.move_to_inbox!(user_id, topic_id)
|
||||
def self.move_to_inbox!(user_id, topic)
|
||||
topic_id = topic.id
|
||||
|
||||
return if (TopicUser.where(
|
||||
user_id: user_id,
|
||||
topic_id: topic_id,
|
||||
@@ -12,13 +14,16 @@ class UserArchivedMessage < ActiveRecord::Base
|
||||
UserArchivedMessage.where(user_id: user_id, topic_id: topic_id).destroy_all
|
||||
trigger(:move_to_inbox, user_id, topic_id)
|
||||
MessageBus.publish("/topic/#{topic_id}", { type: "move_to_inbox" }, user_ids: [user_id])
|
||||
publish_topic_tracking_state(topic, false)
|
||||
end
|
||||
|
||||
def self.archive!(user_id, topic_id)
|
||||
def self.archive!(user_id, topic)
|
||||
topic_id = topic.id
|
||||
UserArchivedMessage.where(user_id: user_id, topic_id: topic_id).destroy_all
|
||||
UserArchivedMessage.create!(user_id: user_id, topic_id: topic_id)
|
||||
trigger(:archive_message, user_id, topic_id)
|
||||
MessageBus.publish("/topic/#{topic_id}", { type: "archived" }, user_ids: [user_id])
|
||||
publish_topic_tracking_state(topic, true)
|
||||
end
|
||||
|
||||
def self.trigger(event, user_id, topic_id)
|
||||
@@ -28,6 +33,14 @@ class UserArchivedMessage < ActiveRecord::Base
|
||||
DiscourseEvent.trigger(event, user: user, topic: topic)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def self.publish_topic_tracking_state(topic, archived)
|
||||
TopicTrackingState.publish_private_message(
|
||||
topic, archived: archived
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
# == Schema Information
|
||||
|
||||
Reference in New Issue
Block a user