Class: UserArchivedMessage

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/user_archived_message.rb

Class Method Summary collapse

Class Method Details

.archive!(user_id, topic) ⇒ Object



25
26
27
28
29
30
31
# File 'app/models/user_archived_message.rb', line 25

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])
end

.move_to_inbox!(user_id, topic) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/user_archived_message.rb', line 7

def self.move_to_inbox!(user_id, topic)
  topic_id = topic.id

  if (
       TopicUser.where(
         user_id: user_id,
         topic_id: topic_id,
         notification_level: TopicUser.notification_levels[:muted],
       ).exists?
     )
    return
  end

  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])
end

.trigger(event, user_id, topic_id) ⇒ Object



33
34
35
36
37
# File 'app/models/user_archived_message.rb', line 33

def self.trigger(event, user_id, topic_id)
  user = User.find_by(id: user_id)
  topic = Topic.find_by(id: topic_id)
  DiscourseEvent.trigger(event, user: user, topic: topic) if user && topic
end