Class: GroupArchivedMessage

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

Class Method Summary collapse

Class Method Details

.archive!(group_id, topic, opts = {}) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'app/models/group_archived_message.rb', line 22

def self.archive!(group_id, topic, opts = {})
  topic_id = topic.id
  destroyed = GroupArchivedMessage.where(group_id: group_id, topic_id: topic_id).destroy_all
  GroupArchivedMessage.create!(group_id: group_id, topic_id: topic_id)
  trigger(:archive_message, group_id, topic_id)
  MessageBus.publish("/topic/#{topic_id}", { type: "archived" }, group_ids: [group_id])
  publish_topic_tracking_state(topic, group_id, opts[:acting_user_id])
  set_imap_sync(topic_id) if !opts[:skip_imap_sync] && destroyed.blank?
  Jobs.enqueue(
    :group_pm_update_summary,
    group_id: group_id,
    topic_id: topic_id,
    acting_user_id: opts[:acting_user_id],
  )
end

.move_to_inbox!(group_id, topic, opts = {}) ⇒ Object



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

def self.move_to_inbox!(group_id, topic, opts = {})
  topic_id = topic.id
  destroyed = GroupArchivedMessage.where(group_id: group_id, topic_id: topic_id).destroy_all
  trigger(:move_to_inbox, group_id, topic_id)
  MessageBus.publish("/topic/#{topic_id}", { type: "move_to_inbox" }, group_ids: [group_id])
  publish_topic_tracking_state(topic, group_id, opts[:acting_user_id])
  set_imap_sync(topic_id) if !opts[:skip_imap_sync] && destroyed.present?
  Jobs.enqueue(
    :group_pm_update_summary,
    group_id: group_id,
    topic_id: topic_id,
    acting_user_id: opts[:acting_user_id],
  )
end

.trigger(event, group_id, topic_id) ⇒ Object



38
39
40
41
42
# File 'app/models/group_archived_message.rb', line 38

def self.trigger(event, group_id, topic_id)
  group = Group.find_by(id: group_id)
  topic = Topic.find_by(id: topic_id)
  DiscourseEvent.trigger(event, group: group, topic: topic) if group && topic
end