Set and store report URIs (#10303)

Fixes #10271
This commit is contained in:
ThibG 2019-03-17 15:34:56 +01:00 committed by Eugen Rochko
parent 5e38ef87a7
commit a20354a20b
8 changed files with 52 additions and 6 deletions

View file

@ -14,7 +14,8 @@ class ActivityPub::Activity::Flag < ActivityPub::Activity
@account,
target_account,
status_ids: target_statuses.nil? ? [] : target_statuses.map(&:id),
comment: @json['content'] || ''
comment: @json['content'] || '',
uri: report_uri
)
end
end
@ -28,4 +29,8 @@ class ActivityPub::Activity::Flag < ActivityPub::Activity
def object_uris
@object_uris ||= Array(@object.is_a?(Array) ? @object.map { |item| value_or_id(item) } : value_or_id(@object))
end
def report_uri
@json['id'] unless @json['id'].nil? || invalid_origin?(@json['id'])
end
end

View file

@ -13,6 +13,7 @@
# action_taken_by_account_id :bigint(8)
# target_account_id :bigint(8) not null
# assigned_account_id :bigint(8)
# uri :string
#
class Report < ApplicationRecord
@ -28,6 +29,12 @@ class Report < ApplicationRecord
validates :comment, length: { maximum: 1000 }
def local?
false # Force uri_for to use uri attribute
end
before_validation :set_uri, only: :create
def object_type
:flag
end
@ -89,4 +96,8 @@ class Report < ApplicationRecord
Admin::ActionLog.from("(#{sql}) AS admin_action_logs")
end
def set_uri
self.uri = ActivityPub::TagManager.instance.generate_uri_for(self) if uri.nil? && account.local?
end
end

View file

@ -5,7 +5,6 @@ class ActivityPub::FlagSerializer < ActiveModel::Serializer
attribute :virtual_object, key: :object
def id
# This is nil for now
ActivityPub::TagManager.instance.uri_for(object)
end

View file

@ -21,7 +21,8 @@ class ReportService < BaseService
@report = @source_account.reports.create!(
target_account: @target_account,
status_ids: @status_ids,
comment: @comment
comment: @comment,
uri: @options[:uri]
)
end