Merge tag 'v2.7.0' into instance_only_statuses

This commit is contained in:
Renato "Lond" Cerqueira
2019-01-22 11:56:24 +01:00
115 changed files with 2913 additions and 803 deletions

View File

@ -33,6 +33,8 @@ class ActivityPub::ProcessAccountService < BaseService
after_protocol_change! if protocol_changed?
after_key_change! if key_changed? && !@options[:signed_with_known_key]
clear_tombstones! if key_changed?
unless @options[:only_key]
check_featured_collection! if @account.featured_collection_url.present?
check_links! unless @account.fields.empty?
@ -209,6 +211,10 @@ class ActivityPub::ProcessAccountService < BaseService
!@old_public_key.nil? && @old_public_key != @account.public_key
end
def clear_tombstones!
Tombstone.delete_all(account_id: @account.id)
end
def protocol_changed?
!@old_protocol.nil? && @old_protocol != @account.protocol
end

View File

@ -43,7 +43,7 @@ class FetchOEmbedService
res.code != 200 ? nil : res.body_with_limit
end
validate(parse_for_format(body)) unless body.nil?
validate(parse_for_format(body)) if body.present?
rescue Oj::ParseError, Ox::ParseError
nil
end

View File

@ -49,6 +49,8 @@ class PostStatusService < BaseService
@visibility = :unlisted if @visibility == :public && @account.silenced
@scheduled_at = @options[:scheduled_at]&.to_datetime
@scheduled_at = nil if scheduled_in_the_past?
rescue ArgumentError
raise ActiveRecord::RecordInvalid
end
def process_status!

View File

@ -3,6 +3,7 @@
class PrecomputeFeedService < BaseService
def call(account)
FeedManager.instance.populate_feed(account)
ensure
Redis.current.del("account:#{account.id}:regeneration")
end
end

View File

@ -20,6 +20,7 @@ class UnfollowService < BaseService
follow.destroy!
create_notification(follow) unless @target_account.local?
create_reject_notification(follow) if @target_account.local? && !@source_account.local?
UnmergeWorker.perform_async(@target_account.id, @source_account.id)
follow
end
@ -42,6 +43,12 @@ class UnfollowService < BaseService
end
end
def create_reject_notification(follow)
# Rejecting an already-existing follow request
return unless follow.account.activitypub?
ActivityPub::DeliveryWorker.perform_async(build_reject_json(follow), follow.target_account_id, follow.account.inbox_url)
end
def build_json(follow)
ActiveModelSerializers::SerializableResource.new(
follow,
@ -50,6 +57,14 @@ class UnfollowService < BaseService
).to_json
end
def build_reject_json(follow)
ActiveModelSerializers::SerializableResource.new(
follow,
serializer: ActivityPub::RejectFollowSerializer,
adapter: ActivityPub::Adapter
).to_json
end
def build_xml(follow)
OStatus::AtomSerializer.render(OStatus::AtomSerializer.new.unfollow_salmon(follow))
end