Class: Libertree::Model::ChatMessage
- Inherits:
-
Object
- Object
- Libertree::Model::ChatMessage
- Defined in:
- lib/libertree/model/chat-message.rb
Class Method Summary collapse
Instance Method Summary collapse
- #after_create ⇒ Object
- #distribute ⇒ Object
- #partner_for(account) ⇒ Object
- #recipient ⇒ Object
- #sender ⇒ Object
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(account, member, limit = 32) return [] if account.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 }, account.member.id, member.id, member.id, account.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(account, member_id) return if account.nil? self.where( Sequel.lit( "from_member_id = ? AND to_member_id = ?", member_id.to_i, account.member.id ) ).update(seen: true) end |
Instance Method Details
#after_create ⇒ Object
4 5 6 7 |
# File 'lib/libertree/model/chat-message.rb', line 4 def after_create super self.distribute end |
#distribute ⇒ Object
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(account) if account.member == self.sender self.recipient elsif account.member == self.recipient self.sender end end |
#recipient ⇒ Object
26 27 28 |
# File 'lib/libertree/model/chat-message.rb', line 26 def recipient @recipient ||= Member[self.to_member_id] end |
#sender ⇒ Object
22 23 24 |
# File 'lib/libertree/model/chat-message.rb', line 22 def sender @sender ||= Member[self.from_member_id] end |