activitypub-academy/app/models/follow_request.rb

60 lines
1.2 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
class FollowRequest < ApplicationRecord
2016-12-27 03:30:45 +09:00
include Paginable
2017-02-11 10:12:05 +09:00
include Streamable
2016-12-27 03:30:45 +09:00
belongs_to :account
belongs_to :target_account, class_name: 'Account'
has_one :notification, as: :activity, dependent: :destroy
validates :account, :target_account, presence: true
validates :account_id, uniqueness: { scope: :target_account_id }
def authorize!
2017-02-11 10:12:05 +09:00
@verb = :authorize
account.follow!(target_account)
2017-01-26 11:56:26 +09:00
MergeWorker.perform_async(target_account.id, account.id)
2017-02-11 10:12:05 +09:00
destroy!
end
def reject!
2017-02-11 10:12:05 +09:00
@verb = :reject
destroy!
end
2017-02-11 10:12:05 +09:00
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