about summary refs log blame commit diff
path: root/app/serializers/web/notification_serializer.rb
blob: f3c4ffc477c85421e8cf3a5f245d9044b11f5f63 (plain) (tree)
1
2
3
4
5
6
7
8
9

                                                           
                       
                                             
 
                                                                
 
                                                     
     
                                                                            
     
                     

             
                       

          
                                                         
     
                                                                                                                                         
     
                                                                                                                                             
     
# frozen_string_literal: true

class Web::NotificationSerializer < ActiveModel::Serializer
  include RoutingHelper
  include ActionView::Helpers::TextHelper
  include ActionView::Helpers::SanitizeHelper

  attributes :access_token, :preferred_locale, :notification_id,
             :notification_type, :icon, :title, :body

  def access_token
    current_push_subscription.associated_access_token
  end

  def preferred_locale
    current_push_subscription.associated_user&.locale || I18n.default_locale
  end

  def notification_id
    object.id
  end

  def notification_type
    object.type
  end

  def icon
    full_asset_url(object.from_account.avatar_static_url)
  end

  def title
    I18n.t("notification_mailer.#{object.type}.subject", name: object.from_account.display_name.presence || object.from_account.username)
  end

  def body
    truncate(strip_tags(object.target_status&.spoiler_text&.presence || object.target_status&.text || object.from_account.note), length: 140)
  end
end