about summary refs log tree commit diff
path: root/app/models/follow_request.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-02-11 02:12:05 +0100
committerEugen Rochko <eugen@zeonfederated.com>2017-02-11 02:58:00 +0100
commit149887a0ffc81b588520ff82ab9fda8dff7bce6c (patch)
treefc1ba51d91fbadf729241381a8c46643121ad99f /app/models/follow_request.rb
parentd551e43a9bc35b4785285e78f5ecd3157636b447 (diff)
Make follow requests federate
Diffstat (limited to 'app/models/follow_request.rb')
-rw-r--r--app/models/follow_request.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/app/models/follow_request.rb b/app/models/follow_request.rb
index 936ad0691..989c2c2a2 100644
--- a/app/models/follow_request.rb
+++ b/app/models/follow_request.rb
@@ -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