Implement Undo { Accept { Follow } } (fixes #8234) (#8245)

* Add Follow#revoke_request!

* Implement Undo { Accept { Follow } } (fixes #8234)
This commit is contained in:
ThibG
2018-08-17 16:24:56 +02:00
committed by Eugen Rochko
parent 1ee675d68b
commit 59f7f4c923
4 changed files with 53 additions and 0 deletions

View File

@ -5,6 +5,8 @@ class ActivityPub::Activity::Undo < ActivityPub::Activity
case @object['type']
when 'Announce'
undo_announce
when 'Accept'
undo_accept
when 'Follow'
undo_follow
when 'Like'
@ -27,6 +29,10 @@ class ActivityPub::Activity::Undo < ActivityPub::Activity
end
end
def undo_accept
::Follow.find_by(target_account: @account, uri: target_uri)&.revoke_request!
end
def undo_follow
target_account = account_from_uri(target_uri)

View File

@ -32,6 +32,11 @@ class Follow < ApplicationRecord
false # Force uri_for to use uri attribute
end
def revoke_request!
FollowRequest.create!(account: account, target_account: target_account, show_reblogs: show_reblogs, uri: uri)
destroy!
end
before_validation :set_uri, only: :create
after_destroy :remove_endorsements