# frozen_string_literal: true class ActivityPub::NoteSerializer < ActiveModel::Serializer attributes :id, :type, :summary, :content, :in_reply_to, :published, :url, :attributed_to, :to, :cc, :sensitive, :atom_uri, :in_reply_to_atom_uri, :conversation has_many :media_attachments, key: :attachment has_many :virtual_tags, key: :tag def id ActivityPub::TagManager.instance.uri_for(object) end def type 'Note' end def summary object.spoiler_text.presence end def content Formatter.instance.format(object) end def in_reply_to return unless object.reply? if object.thread.uri.nil? || object.thread.uri.start_with?('http') ActivityPub::TagManager.instance.uri_for(object.thread) else object.thread.url end end def published object.created_at.iso8601 end def url ActivityPub::TagManager.instance.url_for(object) end def attributed_to ActivityPub::TagManager.instance.uri_for(object.account) end def to ActivityPub::TagManager.instance.to(object) end def cc ActivityPub::TagManager.instance.cc(object) end def virtual_tags object.mentions + object.tags end def atom_uri return unless object.local? ::TagManager.instance.uri_for(object) end def in_reply_to_atom_uri return unless object.reply? ::TagManager.instance.uri_for(object.thread) end def conversation return if object.conversation.nil? if object.conversation.uri? object.conversation.uri else TagManager.instance.unique_tag(object.conversation.created_at, object.conversation.id, 'Conversation') end end def local? object.account.local? end class MediaAttachmentSerializer < ActiveModel::Serializer include RoutingHelper attributes :type, :media_type, :url def type 'Document' end def media_type object.file_content_type end def url object.local? ? full_asset_url(object.file.url(:original, false)) : object.remote_url end end class MentionSerializer < ActiveModel::Serializer attributes :type, :href, :name def type 'Mention' end def href ActivityPub::TagManager.instance.uri_for(object.account) end def name "@#{object.account.acct}" end end class TagSerializer < ActiveModel::Serializer include RoutingHelper attributes :type, :href, :name def type 'Hashtag' end def href tag_url(object) end def name "##{object.name}" end end end