class MessageReceipt

Schema Information

Table name: message_receipts

id                   :integer          not null, primary key
message_id           :integer
user_id              :integer
chat_conversation_id :integer
read                 :boolean          default(FALSE)
sent                 :boolean          default(FALSE)
created_at           :datetime
updated_at           :datetime
university_id           :integer

Public Instance Methods

message_as_json() click to toggle source

Returns message as json object with unread conversation type.

# File app/models/message_receipt.rb, line 43
def message_as_json
  message.as_json.merge(unread_conversations_count: user.cached_message_count)
end
trigger_pusher_event() click to toggle source

It is used to send message, if user is online it will trigger pusher event else it will send email.

# File app/models/message_receipt.rb, line 31
def trigger_pusher_event
  user.update_columns(cached_message_count: user.unread_conversations.count)
  if user.online?
    ActsAsTenant.current_tenant.pusher_configuration.client.trigger_async(
      "private-user-#{user_id}", (sent? ? 'message-sent' : 'message-received'), message_as_json)
    user.chat_activities.find_or_create_by(chat_conversation: chat_conversation)
  else
    ContactMailer.delay(queue: :mailer).offline_chat(self.message, user)
  end
end