diff options
Diffstat (limited to 'app/serializers')
-rw-r--r-- | app/serializers/activitypub/note_serializer.rb | 1 | ||||
-rw-r--r-- | app/serializers/initial_state_serializer.rb | 9 | ||||
-rw-r--r-- | app/serializers/rest/account_serializer.rb | 42 | ||||
-rw-r--r-- | app/serializers/rest/admin/account_serializer.rb | 3 | ||||
-rw-r--r-- | app/serializers/rest/admin/webhook_event_serializer.rb | 2 | ||||
-rw-r--r-- | app/serializers/rest/instance_serializer.rb | 8 | ||||
-rw-r--r-- | app/serializers/rest/mute_serializer.rb | 4 | ||||
-rw-r--r-- | app/serializers/rest/preview_card_serializer.rb | 2 | ||||
-rw-r--r-- | app/serializers/rest/privacy_policy_serializer.rb | 2 | ||||
-rw-r--r-- | app/serializers/rest/status_serializer.rb | 4 | ||||
-rw-r--r-- | app/serializers/rest/v1/instance_serializer.rb | 1 | ||||
-rw-r--r-- | app/serializers/rest/web_push_subscription_serializer.rb | 6 |
12 files changed, 62 insertions, 22 deletions
diff --git a/app/serializers/activitypub/note_serializer.rb b/app/serializers/activitypub/note_serializer.rb index ca067ed9b..52ffaf717 100644 --- a/app/serializers/activitypub/note_serializer.rb +++ b/app/serializers/activitypub/note_serializer.rb @@ -32,6 +32,7 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer def id raise Mastodon::NotPermittedError, 'Local-only statuses should not be serialized' if object.local_only? && !instance_options[:allow_local_only] + ActivityPub::TagManager.instance.uri_for(object) end diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index d753fa51a..45ee06e12 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -24,7 +24,6 @@ class InitialStateSerializer < ActiveModel::Serializer } end - # rubocop:disable Metrics/AbcSize def meta store = { streaming_api_base_url: Rails.configuration.x.streaming_api_base_url, @@ -45,7 +44,8 @@ class InitialStateSerializer < ActiveModel::Serializer timeline_preview: Setting.timeline_preview, activity_api_enabled: Setting.activity_api_enabled, single_user_mode: Rails.configuration.x.single_user_mode, - translation_enabled: TranslationService.configured?, + trends_as_landing_page: Setting.trends_as_landing_page, + status_page_url: Setting.status_page_url, } if object.current_account @@ -77,13 +77,10 @@ class InitialStateSerializer < ActiveModel::Serializer store[:disabled_account_id] = object.disabled_account.id.to_s if object.disabled_account store[:moved_to_account_id] = object.moved_to_account.id.to_s if object.moved_to_account - if Rails.configuration.x.single_user_mode - store[:owner] = object.owner&.id&.to_s - end + store[:owner] = object.owner&.id&.to_s if Rails.configuration.x.single_user_mode store end - # rubocop:enable Metrics/AbcSize def compose store = {} diff --git a/app/serializers/rest/account_serializer.rb b/app/serializers/rest/account_serializer.rb index 9a3ca75dc..d4e7ac974 100644 --- a/app/serializers/rest/account_serializer.rb +++ b/app/serializers/rest/account_serializer.rb @@ -16,6 +16,28 @@ class REST::AccountSerializer < ActiveModel::Serializer attribute :silenced, key: :limited, if: :silenced? attribute :noindex, if: :local? + attribute :memorial, if: :memorial? + + class AccountDecorator < SimpleDelegator + def self.model_name + Account.model_name + end + + def moved? + false + end + end + + class RoleSerializer < ActiveModel::Serializer + attributes :id, :name, :color + + def id + object.id.to_s + end + end + + has_many :roles, serializer: RoleSerializer, if: :local? + class FieldSerializer < ActiveModel::Serializer include FormattingHelper @@ -69,7 +91,7 @@ class REST::AccountSerializer < ActiveModel::Serializer end def followers_count - (Setting.hide_followers_count || object.user&.setting_hide_followers_count) ? -1 : object.followers_count + Setting.hide_followers_count || object.user&.setting_hide_followers_count ? -1 : object.followers_count end def display_name @@ -89,7 +111,7 @@ class REST::AccountSerializer < ActiveModel::Serializer end def moved_to_account - object.suspended? ? nil : object.moved_to_account + object.suspended? ? nil : AccountDecorator.new(object.moved_to_account) end def emojis @@ -108,13 +130,25 @@ class REST::AccountSerializer < ActiveModel::Serializer object.silenced? end + def memorial + object.memorial? + end + + def roles + if object.suspended? || object.user.nil? + [] + else + [object.user.role].compact.filter(&:highlighted?) + end + end + def noindex object.user_prefers_noindex? end - delegate :suspended?, :silenced?, :local?, to: :object + delegate :suspended?, :silenced?, :local?, :memorial?, to: :object def moved_and_not_nested? - object.moved? && object.moved_to_account.moved_to_account_id.nil? + object.moved? end end diff --git a/app/serializers/rest/admin/account_serializer.rb b/app/serializers/rest/admin/account_serializer.rb index ad98a53e8..959884c55 100644 --- a/app/serializers/rest/admin/account_serializer.rb +++ b/app/serializers/rest/admin/account_serializer.rb @@ -2,7 +2,7 @@ class REST::Admin::AccountSerializer < ActiveModel::Serializer attributes :id, :username, :domain, :created_at, - :email, :ip, :role, :confirmed, :suspended, + :email, :ip, :confirmed, :suspended, :silenced, :sensitized, :disabled, :approved, :locale, :invite_request @@ -11,6 +11,7 @@ class REST::Admin::AccountSerializer < ActiveModel::Serializer has_many :ips, serializer: REST::Admin::IpSerializer has_one :account, serializer: REST::AccountSerializer + has_one :role, serializer: REST::RoleSerializer def id object.id.to_s diff --git a/app/serializers/rest/admin/webhook_event_serializer.rb b/app/serializers/rest/admin/webhook_event_serializer.rb index fe0ac23f9..b6d2616e5 100644 --- a/app/serializers/rest/admin/webhook_event_serializer.rb +++ b/app/serializers/rest/admin/webhook_event_serializer.rb @@ -7,6 +7,8 @@ class REST::Admin::WebhookEventSerializer < ActiveModel::Serializer REST::Admin::AccountSerializer when 'Report' REST::Admin::ReportSerializer + when 'Status' + REST::StatusSerializer else super end diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb index 5ae1099d0..41adaed80 100644 --- a/app/serializers/rest/instance_serializer.rb +++ b/app/serializers/rest/instance_serializer.rb @@ -45,6 +45,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer { urls: { streaming: Rails.configuration.x.streaming_api_base_url, + status: object.status_page_url, }, accounts: { @@ -55,6 +56,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer max_characters: StatusLengthValidator::MAX_CHARS, max_media_attachments: 4, characters_reserved_per_url: StatusLengthValidator::URL_PLACEHOLDER_CHARS, + supported_mime_types: HtmlAwareFormatter::STATUS_MIME_TYPES, }, media_attachments: { @@ -94,11 +96,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer end def registrations_message - if Setting.closed_registrations_message.present? - markdown.render(Setting.closed_registrations_message) - else - nil - end + markdown.render(Setting.closed_registrations_message) if Setting.closed_registrations_message.present? end def markdown diff --git a/app/serializers/rest/mute_serializer.rb b/app/serializers/rest/mute_serializer.rb index 043a2f059..c9b55ff16 100644 --- a/app/serializers/rest/mute_serializer.rb +++ b/app/serializers/rest/mute_serializer.rb @@ -2,7 +2,7 @@ class REST::MuteSerializer < ActiveModel::Serializer include RoutingHelper - + attributes :id, :account, :target_account, :created_at, :hide_notifications def account @@ -12,4 +12,4 @@ class REST::MuteSerializer < ActiveModel::Serializer def target_account REST::AccountSerializer.new(object.target_account) end -end \ No newline at end of file +end diff --git a/app/serializers/rest/preview_card_serializer.rb b/app/serializers/rest/preview_card_serializer.rb index 66ff47d22..8413b23d8 100644 --- a/app/serializers/rest/preview_card_serializer.rb +++ b/app/serializers/rest/preview_card_serializer.rb @@ -3,7 +3,7 @@ class REST::PreviewCardSerializer < ActiveModel::Serializer include RoutingHelper - attributes :url, :title, :description, :type, + attributes :url, :title, :description, :language, :type, :author_name, :author_url, :provider_name, :provider_url, :html, :width, :height, :image, :embed_url, :blurhash diff --git a/app/serializers/rest/privacy_policy_serializer.rb b/app/serializers/rest/privacy_policy_serializer.rb index f0572e714..57a67abf3 100644 --- a/app/serializers/rest/privacy_policy_serializer.rb +++ b/app/serializers/rest/privacy_policy_serializer.rb @@ -8,7 +8,7 @@ class REST::PrivacyPolicySerializer < ActiveModel::Serializer end def content - markdown.render(object.text % { domain: Rails.configuration.x.local_domain }) + markdown.render(format(object.text, domain: Rails.configuration.x.local_domain)) end private diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb index 659c45b83..eb5f3c3ea 100644 --- a/app/serializers/rest/status_serializer.rb +++ b/app/serializers/rest/status_serializer.rb @@ -13,7 +13,7 @@ class REST::StatusSerializer < ActiveModel::Serializer attribute :muted, if: :current_user? attribute :bookmarked, if: :current_user? attribute :pinned, if: :pinnable? - attribute :local_only if :local? + attribute :local_only, if: :local? has_many :filtered, serializer: REST::FilterResultSerializer, if: :current_user? attribute :content, unless: :source_requested? @@ -32,6 +32,8 @@ class REST::StatusSerializer < ActiveModel::Serializer has_one :preview_card, key: :card, serializer: REST::PreviewCardSerializer has_one :preloadable_poll, key: :poll, serializer: REST::PollSerializer + delegate :local?, to: :object + def id object.id.to_s end diff --git a/app/serializers/rest/v1/instance_serializer.rb b/app/serializers/rest/v1/instance_serializer.rb index 389ec7dff..0c2101404 100644 --- a/app/serializers/rest/v1/instance_serializer.rb +++ b/app/serializers/rest/v1/instance_serializer.rb @@ -79,6 +79,7 @@ class REST::V1::InstanceSerializer < ActiveModel::Serializer max_characters: StatusLengthValidator::MAX_CHARS, max_media_attachments: 4, characters_reserved_per_url: StatusLengthValidator::URL_PLACEHOLDER_CHARS, + supported_mime_types: HtmlAwareFormatter::STATUS_MIME_TYPES, }, media_attachments: { diff --git a/app/serializers/rest/web_push_subscription_serializer.rb b/app/serializers/rest/web_push_subscription_serializer.rb index 194cc0a8c..674a2d5a8 100644 --- a/app/serializers/rest/web_push_subscription_serializer.rb +++ b/app/serializers/rest/web_push_subscription_serializer.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class REST::WebPushSubscriptionSerializer < ActiveModel::Serializer - attributes :id, :endpoint, :alerts, :server_key + attributes :id, :endpoint, :alerts, :server_key, :policy def alerts (object.data&.dig('alerts') || {}).each_with_object({}) { |(k, v), h| h[k] = ActiveModel::Type::Boolean.new.cast(v) } @@ -10,4 +10,8 @@ class REST::WebPushSubscriptionSerializer < ActiveModel::Serializer def server_key Rails.configuration.x.vapid_public_key end + + def policy + object.data&.dig('policy') || 'all' + end end |