47 lines
1.4 KiB
Ruby
47 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class REST::ChatConversationAccountSerializer < ActiveModel::Serializer
|
|
attributes :id, :is_hidden, :is_approved, :unread_count,
|
|
:is_unread, :chat_conversation_id, :created_at,
|
|
:is_muted, :chat_message_expiration_policy
|
|
|
|
has_many :participant_accounts, key: :other_accounts, serializer: REST::AccountSerializer
|
|
has_one :last_chat_message, serializer: REST::ChatMessageSerializer, unless: :last_chat_message_id?
|
|
|
|
def id
|
|
object.id.to_s
|
|
end
|
|
|
|
def chat_conversation_id
|
|
object.chat_conversation_id.to_s
|
|
end
|
|
|
|
def last_chat_message_id?
|
|
object.last_chat_message_id.nil?
|
|
end
|
|
|
|
def is_unread
|
|
object.unread_count > 0
|
|
end
|
|
|
|
def chat_message_expiration_policy
|
|
case object.chat_message_expiration_policy
|
|
when ChatConversationAccount::EXPIRATION_POLICY_MAP[:five_minutes]
|
|
return 'five_minutes'
|
|
when ChatConversationAccount::EXPIRATION_POLICY_MAP[:one_hour]
|
|
return 'one_hour'
|
|
when ChatConversationAccount::EXPIRATION_POLICY_MAP[:six_hours]
|
|
return 'six_hours'
|
|
when ChatConversationAccount::EXPIRATION_POLICY_MAP[:one_day]
|
|
return 'one_day'
|
|
when ChatConversationAccount::EXPIRATION_POLICY_MAP[:three_days]
|
|
return 'three_days'
|
|
when ChatConversationAccount::EXPIRATION_POLICY_MAP[:one_week]
|
|
return 'one_week'
|
|
else
|
|
return nil
|
|
end
|
|
end
|
|
|
|
end
|