Class: Libertree::Model::ChatMessage

Inherits:
Object
  • Object
show all
Defined in:
lib/libertree/model/chat-message.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.between(account, member, limit = 32) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/libertree/model/chat-message.rb', line 38

def self.between(, member, limit = 32)
  return []  if .nil? || member.nil?

  s(
    %{
      SELECT * FROM (
        SELECT
          *
        FROM
          chat_messages cm
        WHERE
          from_member_id = ?
          AND to_member_id = ?
          OR
          from_member_id = ?
          AND to_member_id = ?
        ORDER BY
          time_created DESC
        LIMIT #{ [limit.to_i, 0].max }
      ) AS x
      ORDER BY time_created
    },
    .member.id,
    member.id,
    member.id,
    .member.id
  )
end

.mark_seen_between(account, member_id) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
# File 'lib/libertree/model/chat-message.rb', line 67

def self.mark_seen_between(, member_id)
  return  if .nil?

  self.where(
    Sequel.lit(
      "from_member_id = ? AND to_member_id = ?",
      member_id.to_i,
      .member.id
    )
  ).update(seen: true)
end

Instance Method Details

#after_createObject



4
5
6
7
# File 'lib/libertree/model/chat-message.rb', line 4

def after_create
  super
  self.distribute
end

#distributeObject



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/libertree/model/chat-message.rb', line 9

def distribute
  return  if ! self.recipient.tree
  Libertree::Model::Job.create(
    {
      task: 'request:CHAT',
      params: {
        'chat_message_id' => self.id,
        'server_id'       => self.recipient.tree.id,
      }.to_json,
    }
  )
end

#partner_for(account) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/libertree/model/chat-message.rb', line 30

def partner_for()
  if .member == self.sender
    self.recipient
  elsif .member == self.recipient
    self.sender
  end
end

#recipientObject



26
27
28
# File 'lib/libertree/model/chat-message.rb', line 26

def recipient
  @recipient ||= Member[self.to_member_id]
end

#senderObject



22
23
24
# File 'lib/libertree/model/chat-message.rb', line 22

def sender
  @sender ||= Member[self.from_member_id]
end