Merge branch 'main' into glitch-soc/merge-upstream
Conflicts: - `app/serializers/rest/instance_serializer.rb`: Upstream changed the fields returned by /api/v1/instance by adding a `configuration` field holding a lot of useful information making our `max_toot_chars` and `poll_limits` fields obsolete. Keeping those around for now for compatibility. - `app/validators/status_length_validator.rb`: No real conflict, just URL_PLACEHOLDER_CHARS introduced too close to MAX_CHARS which is defined differently in glitch-soc. Ported upstream changes.
This commit is contained in:
@ -6,6 +6,7 @@ class ReportFilter
|
||||
account_id
|
||||
target_account_id
|
||||
by_target_domain
|
||||
target_origin
|
||||
).freeze
|
||||
|
||||
attr_reader :params
|
||||
@ -34,8 +35,21 @@ class ReportFilter
|
||||
Report.where(account_id: value)
|
||||
when :target_account_id
|
||||
Report.where(target_account_id: value)
|
||||
when :target_origin
|
||||
target_origin_scope(value)
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
end
|
||||
end
|
||||
|
||||
def target_origin_scope(value)
|
||||
case value.to_sym
|
||||
when :local
|
||||
Report.where(target_account: Account.local)
|
||||
when :remote
|
||||
Report.where(target_account: Account.remote)
|
||||
else
|
||||
raise "Unknown value: #{value}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -5,7 +5,8 @@ class REST::InstanceSerializer < ActiveModel::Serializer
|
||||
|
||||
attributes :uri, :title, :short_description, :description, :email,
|
||||
:version, :urls, :stats, :thumbnail, :max_toot_chars, :poll_limits,
|
||||
:languages, :registrations, :approval_required, :invites_enabled
|
||||
:languages, :registrations, :approval_required, :invites_enabled,
|
||||
:configuration
|
||||
|
||||
has_one :contact_account, serializer: REST::AccountSerializer
|
||||
|
||||
@ -66,6 +67,32 @@ class REST::InstanceSerializer < ActiveModel::Serializer
|
||||
{ streaming_api: Rails.configuration.x.streaming_api_base_url }
|
||||
end
|
||||
|
||||
def configuration
|
||||
{
|
||||
statuses: {
|
||||
max_characters: StatusLengthValidator::MAX_CHARS,
|
||||
max_media_attachments: 4,
|
||||
characters_reserved_per_url: StatusLengthValidator::URL_PLACEHOLDER_CHARS,
|
||||
},
|
||||
|
||||
media_attachments: {
|
||||
supported_mime_types: MediaAttachment::IMAGE_MIME_TYPES + MediaAttachment::VIDEO_MIME_TYPES + MediaAttachment::AUDIO_MIME_TYPES,
|
||||
image_size_limit: MediaAttachment::IMAGE_LIMIT,
|
||||
image_matrix_limit: Attachmentable::MAX_MATRIX_LIMIT,
|
||||
video_size_limit: MediaAttachment::VIDEO_LIMIT,
|
||||
video_frame_rate_limit: MediaAttachment::MAX_VIDEO_FRAME_RATE,
|
||||
video_matrix_limit: MediaAttachment::MAX_VIDEO_MATRIX_LIMIT,
|
||||
},
|
||||
|
||||
polls: {
|
||||
max_options: PollValidator::MAX_OPTIONS,
|
||||
max_characters_per_option: PollValidator::MAX_OPTION_CHARS,
|
||||
min_expiration: PollValidator::MIN_EXPIRATION,
|
||||
max_expiration: PollValidator::MAX_EXPIRATION,
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
def languages
|
||||
[I18n.default_locale]
|
||||
end
|
||||
|
@ -2,7 +2,8 @@
|
||||
|
||||
class StatusLengthValidator < ActiveModel::Validator
|
||||
MAX_CHARS = (ENV['MAX_TOOT_CHARS'] || 500).to_i
|
||||
URL_PLACEHOLDER = "\1#{'x' * 23}"
|
||||
URL_PLACEHOLDER_CHARS = 23
|
||||
URL_PLACEHOLDER = "\1#{'x' * URL_PLACEHOLDER_CHARS}"
|
||||
|
||||
def validate(status)
|
||||
return unless status.local? && !status.reblog?
|
||||
|
@ -7,6 +7,12 @@
|
||||
%ul
|
||||
%li= filter_link_to t('admin.reports.unresolved'), resolved: nil
|
||||
%li= filter_link_to t('admin.reports.resolved'), resolved: '1'
|
||||
.filter-subset
|
||||
%strong= t('admin.reports.target_origin')
|
||||
%ul
|
||||
%li= filter_link_to t('admin.accounts.location.all'), target_origin: nil
|
||||
%li= filter_link_to t('admin.accounts.location.local'), target_origin: 'local'
|
||||
%li= filter_link_to t('admin.accounts.location.remote'), target_origin: 'remote'
|
||||
|
||||
= form_tag admin_reports_url, method: 'GET', class: 'simple_form' do
|
||||
.fields-group
|
||||
|
Reference in New Issue
Block a user