mirror of
https://github.com/mastodon/mastodon.git
synced 2025-11-27 18:10:58 +00:00
Preserve old API interface
This commit is contained in:
parent
6aad732fc5
commit
891faa5d74
|
|
@ -18,9 +18,6 @@ class Api::V1::Admin::ReportsController < Api::BaseController
|
|||
|
||||
def index
|
||||
authorize :report, :index?
|
||||
|
||||
return redirect_to api_v1_admin_reports_path(reports_filter.updated_filter) if reports_filter.outdated?
|
||||
|
||||
render json: @reports, each_serializer: REST::Admin::ReportSerializer
|
||||
end
|
||||
|
||||
|
|
@ -74,12 +71,8 @@ class Api::V1::Admin::ReportsController < Api::BaseController
|
|||
@report = Report.find(params[:id])
|
||||
end
|
||||
|
||||
def reports_filter
|
||||
@reports_filter ||= ReportFilter.new(filter_params)
|
||||
end
|
||||
|
||||
def filtered_reports
|
||||
reports_filter.results
|
||||
ReportFilter.new(filter_params).results
|
||||
end
|
||||
|
||||
def report_params
|
||||
|
|
@ -87,7 +80,16 @@ class Api::V1::Admin::ReportsController < Api::BaseController
|
|||
end
|
||||
|
||||
def filter_params
|
||||
params.slice(*ReportFilter::ALL_KEYS).permit(*ReportFilter::ALL_KEYS)
|
||||
filter_params = params.slice(*ReportFilter::API_KEYS).permit(*ReportFilter::API_KEYS)
|
||||
|
||||
resolved = filter_params.delete(:resolved)
|
||||
if resolved.present?
|
||||
filter_params[:status] = ActiveModel::Type::Boolean.new.cast(resolved) ? 'resolved' : 'unresolved'
|
||||
elsif filter_params[:status].nil?
|
||||
filter_params[:status] = 'unresolved'
|
||||
end
|
||||
|
||||
filter_params
|
||||
end
|
||||
|
||||
def next_path
|
||||
|
|
|
|||
|
|
@ -6,16 +6,23 @@ class ReportFilter
|
|||
search_type
|
||||
search_term
|
||||
target_origin
|
||||
account_id
|
||||
target_account_id
|
||||
).freeze
|
||||
|
||||
OUTDATED_KEYS = %i(
|
||||
OUTDATED_ADMIN_KEYS = %i(
|
||||
resolved
|
||||
by_target_domain
|
||||
account_id
|
||||
target_account_id
|
||||
).freeze
|
||||
|
||||
ALL_KEYS = KEYS + OUTDATED_KEYS
|
||||
ALL_KEYS = KEYS + OUTDATED_ADMIN_KEYS
|
||||
API_KEYS = KEYS + %i(
|
||||
resolved
|
||||
account_id
|
||||
target_account_id
|
||||
).freeze
|
||||
|
||||
SEARCH_TYPES = %w(
|
||||
source
|
||||
|
|
@ -41,7 +48,7 @@ class ReportFilter
|
|||
# We always need a status parameter:
|
||||
return true if @params.exclude? :status
|
||||
|
||||
OUTDATED_KEYS.any? { |key, _value| @params.include? key }
|
||||
OUTDATED_ADMIN_KEYS.any? { |key, _value| @params.include? key }
|
||||
end
|
||||
|
||||
def updated_filter
|
||||
|
|
@ -174,6 +181,10 @@ class ReportFilter
|
|||
case key.to_sym
|
||||
when :target_origin
|
||||
target_origin_scope(value)
|
||||
when :target_account_id
|
||||
Report.where(target_account_id: value)
|
||||
when :account_id
|
||||
Report.where(account_id: value)
|
||||
else
|
||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||
end
|
||||
|
|
|
|||
|
|
@ -73,11 +73,12 @@ RSpec.describe 'Reports' do
|
|||
|
||||
context 'with outdated resolved param' do
|
||||
let(:params) { { resolved: true } }
|
||||
let(:scope) { Report.resolved }
|
||||
|
||||
it 'redirects to the new filter path' do
|
||||
it 'returns the resolved reports' do
|
||||
subject
|
||||
|
||||
expect(response).to redirect_to api_v1_admin_reports_url({ status: 'resolved' })
|
||||
expect(response.parsed_body).to match_array(expected_response)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -99,7 +100,7 @@ RSpec.describe 'Reports' do
|
|||
it 'returns only the resolved reports' do
|
||||
subject
|
||||
|
||||
expect(body_as_json).to match_array(expected_response)
|
||||
expect(response.parsed_body).to match_array(expected_response)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user