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:
Guo Xiang Tan
2018-03-06 14:38:43 +08:00
parent 13764b31ec
commit 1365bab0d7
24 changed files with 296 additions and 41 deletions

View File

@@ -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