blob: 2755ba0abba2eb6f4e11ea9482f6ab3806137659 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# frozen_string_literal: true
class FollowRequest < ApplicationRecord
include Paginable
include Streamable
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!
@verb = :authorize
@target = clone.freeze
account.follow!(target_account)
MergeWorker.perform_async(target_account.id, account.id)
destroy!
end
def reject!
@verb = :reject
@target = clone.freeze
destroy!
end
def verb
destroyed? ? (@verb || :delete) : :request_friend
end
def target
if destroyed? && @verb
@target
else
target_account
end
end
def hidden?
true
end
def needs_stream_entry?
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
|