end
def report_params
- params.permit(:account_id, :comment, :forward, status_ids: [])
+ params.permit(:account_id, :comment, :category, :forward, status_ids: [], rule_ids: [])
end
end
scope :with_accounts, -> { includes([:account, :target_account, :action_taken_by_account, :assigned_account].index_with({ user: [:invite_request, :invite] })) }
validates :comment, length: { maximum: 1_000 }
+ validates :rule_ids, absence: true, unless: :violation?
+
+ validate :validate_rule_ids
enum category: {
other: 0,
def set_uri
self.uri = ActivityPub::TagManager.instance.generate_uri_for(self) if uri.nil? && account.local?
end
+
+ def validate_rule_ids
+ return unless violation?
+
+ errors.add(:rule_ids, I18n.t('reports.errors.invalid_rules')) unless rules.size == rule_ids.size
+ end
end
@target_account = target_account
@status_ids = options.delete(:status_ids) || []
@comment = options.delete(:comment) || ''
+ @category = options.delete(:category) || 'other'
+ @rule_ids = options.delete(:rule_ids)
@options = options
raise ActiveRecord::RecordNotFound if @target_account.suspended?
create_report!
notify_staff!
- forward_to_origin! if !@target_account.local? && ActiveModel::Type::Boolean.new.cast(@options[:forward])
+ forward_to_origin! if forward?
@report
end
status_ids: @status_ids,
comment: @comment,
uri: @options[:uri],
- forwarded: ActiveModel::Type::Boolean.new.cast(@options[:forward])
+ forwarded: forward?,
+ category: @category,
+ rule_ids: @rule_ids
)
end
)
end
+ def forward?
+ !@target_account.local? && ActiveModel::Type::Boolean.new.cast(@options[:forward])
+ end
+
def payload
Oj.dump(serialize_payload(@report, ActivityPub::FlagSerializer, account: some_local_account))
end
reply:
proceed: Proceed to reply
prompt: 'You want to reply to this post:'
+ reports:
+ errors:
+ invalid_rules: does not reference valid rules
scheduled_statuses:
over_daily_limit: You have exceeded the limit of %{limit} scheduled posts for today
over_total_limit: You have exceeded the limit of %{limit} scheduled posts