read state is now published

This commit is contained in:
Sam 2013-05-30 16:19:12 +10:00
parent 8874c9ea75
commit 6ad86aa305
3 changed files with 25 additions and 3 deletions

View File

@ -17,7 +17,7 @@ Discourse.TopicTrackingState = Discourse.Model.extend({
tracker.removeTopic(data.topic_id);
}
if (data.message_type === "new_topic" || data.message_type === "unread") {
if (data.message_type === "new_topic" || data.message_type === "unread" || data.message_type == "read") {
tracker.states["t" + data.topic_id] = data.payload;
tracker.notify(data);
}

View File

@ -57,7 +57,21 @@ class TopicTrackingState
end
end
def self.publish_read(topic_id, highest_post_number, user_id)
def self.publish_read(topic_id, last_read_post_number, user_id)
highest_post_number = Topic.where(id: topic_id).pluck(:highest_post_number).first
message = {
topic_id: topic_id,
message_type: "read",
payload: {
last_read_post_number: last_read_post_number,
highest_post_number: highest_post_number,
topic_id: topic_id
}
}
MessageBus.publish("/unread/#{user_id}", message.as_json, user_ids: [user_id])
end
def self.treat_as_new_topic_clause

View File

@ -156,7 +156,7 @@ class TopicUser < ActiveRecord::Base
tu.topic_id = :topic_id AND
tu.user_id = :user_id
RETURNING
topic_users.notification_level, tu.notification_level old_level
topic_users.notification_level, tu.notification_level old_level, tu.last_read_post_number
",
args).values
@ -164,12 +164,20 @@ class TopicUser < ActiveRecord::Base
before = rows[0][1].to_i
after = rows[0][0].to_i
before_last_read = rows[0][2].to_i
if before_last_read < post_number
TopicTrackingState.publish_read(topic_id, post_number, user.id)
end
if before != after
MessageBus.publish("/topic/#{topic_id}", {notification_level_change: after}, user_ids: [user.id])
end
end
if rows.length == 0
TopicTrackingState.publish_read(topic_id, post_number, user.id)
args[:tracking] = notification_levels[:tracking]
args[:regular] = notification_levels[:regular]
args[:site_setting] = SiteSetting.auto_track_topics_after