Make follow requests federate

This commit is contained in:
Eugen Rochko 2017-02-11 02:12:05 +01:00
parent d551e43a9b
commit 149887a0ff
25 changed files with 148 additions and 61 deletions

View file

@ -12,11 +12,11 @@ class Favourite < ApplicationRecord
validates :status_id, uniqueness: { scope: :account_id }
def verb
:favorite
destroyed? ? :unfavorite : :favorite
end
def title
"#{account.acct} favourited a status by #{status.account.acct}"
destroyed? ? "#{account.acct} no longer favourites a status by #{status.account.acct}" : "#{account.acct} favourited a status by #{status.account.acct}"
end
delegate :object_type, to: :target

View file

@ -2,6 +2,7 @@
class FollowRequest < ApplicationRecord
include Paginable
include Streamable
belongs_to :account
belongs_to :target_account, class_name: 'Account'
@ -12,12 +13,47 @@ class FollowRequest < ApplicationRecord
validates :account_id, uniqueness: { scope: :target_account_id }
def authorize!
@verb = :authorize
account.follow!(target_account)
MergeWorker.perform_async(target_account.id, account.id)
destroy!
end
def reject!
@verb = :reject
destroy!
end
def verb
destroyed? ? (@verb || :delete) : :request_friend
end
def target
target_account
end
def object_type
:person
end
def hidden?
true
end
def title
if destroyed?
case @verb
when :authorize
"#{target_account.acct} authorized #{account.acct}'s request to follow"
when :reject
"#{target_account.acct} rejected #{account.acct}'s request to follow"
else
"#{account.acct} withdrew the request to follow #{target_account.acct}"
end
else
"#{account.acct} requested to follow #{target_account.acct}"
end
end
end

View file

@ -30,7 +30,7 @@ class StreamEntry < ApplicationRecord
end
def targeted?
[:follow, :unfollow, :block, :unblock, :share, :favorite].include? verb
[:follow, :request_friend, :authorize, :unfollow, :block, :unblock, :share, :favorite].include? verb
end
def target