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
|
def index
|
||||||
authorize :report, :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
|
render json: @reports, each_serializer: REST::Admin::ReportSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -74,12 +71,8 @@ class Api::V1::Admin::ReportsController < Api::BaseController
|
||||||
@report = Report.find(params[:id])
|
@report = Report.find(params[:id])
|
||||||
end
|
end
|
||||||
|
|
||||||
def reports_filter
|
|
||||||
@reports_filter ||= ReportFilter.new(filter_params)
|
|
||||||
end
|
|
||||||
|
|
||||||
def filtered_reports
|
def filtered_reports
|
||||||
reports_filter.results
|
ReportFilter.new(filter_params).results
|
||||||
end
|
end
|
||||||
|
|
||||||
def report_params
|
def report_params
|
||||||
|
|
@ -87,7 +80,16 @@ class Api::V1::Admin::ReportsController < Api::BaseController
|
||||||
end
|
end
|
||||||
|
|
||||||
def filter_params
|
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
|
end
|
||||||
|
|
||||||
def next_path
|
def next_path
|
||||||
|
|
|
||||||
|
|
@ -6,16 +6,23 @@ class ReportFilter
|
||||||
search_type
|
search_type
|
||||||
search_term
|
search_term
|
||||||
target_origin
|
target_origin
|
||||||
|
account_id
|
||||||
|
target_account_id
|
||||||
).freeze
|
).freeze
|
||||||
|
|
||||||
OUTDATED_KEYS = %i(
|
OUTDATED_ADMIN_KEYS = %i(
|
||||||
resolved
|
resolved
|
||||||
by_target_domain
|
by_target_domain
|
||||||
account_id
|
account_id
|
||||||
target_account_id
|
target_account_id
|
||||||
).freeze
|
).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(
|
SEARCH_TYPES = %w(
|
||||||
source
|
source
|
||||||
|
|
@ -41,7 +48,7 @@ class ReportFilter
|
||||||
# We always need a status parameter:
|
# We always need a status parameter:
|
||||||
return true if @params.exclude? :status
|
return true if @params.exclude? :status
|
||||||
|
|
||||||
OUTDATED_KEYS.any? { |key, _value| @params.include? key }
|
OUTDATED_ADMIN_KEYS.any? { |key, _value| @params.include? key }
|
||||||
end
|
end
|
||||||
|
|
||||||
def updated_filter
|
def updated_filter
|
||||||
|
|
@ -174,6 +181,10 @@ class ReportFilter
|
||||||
case key.to_sym
|
case key.to_sym
|
||||||
when :target_origin
|
when :target_origin
|
||||||
target_origin_scope(value)
|
target_origin_scope(value)
|
||||||
|
when :target_account_id
|
||||||
|
Report.where(target_account_id: value)
|
||||||
|
when :account_id
|
||||||
|
Report.where(account_id: value)
|
||||||
else
|
else
|
||||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -73,11 +73,12 @@ RSpec.describe 'Reports' do
|
||||||
|
|
||||||
context 'with outdated resolved param' do
|
context 'with outdated resolved param' do
|
||||||
let(:params) { { resolved: true } }
|
let(:params) { { resolved: true } }
|
||||||
|
let(:scope) { Report.resolved }
|
||||||
|
|
||||||
it 'redirects to the new filter path' do
|
it 'returns the resolved reports' do
|
||||||
subject
|
subject
|
||||||
|
|
||||||
expect(response).to redirect_to api_v1_admin_reports_url({ status: 'resolved' })
|
expect(response.parsed_body).to match_array(expected_response)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -99,7 +100,7 @@ RSpec.describe 'Reports' do
|
||||||
it 'returns only the resolved reports' do
|
it 'returns only the resolved reports' do
|
||||||
subject
|
subject
|
||||||
|
|
||||||
expect(body_as_json).to match_array(expected_response)
|
expect(response.parsed_body).to match_array(expected_response)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user