about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-02-11 17:09:36 +0100
committerEugen Rochko <eugen@zeonfederated.com>2017-02-11 17:13:11 +0100
commit50660d54e8cabd08fee649a6abc26f35a8d7a82c (patch)
tree0124bd26554896a409dc7b7b6bb357fc8be8e2c6 /app
parent0b95eb36128077b3074f661dd451a90a18441ef0 (diff)
Fix semantics of follow requests another slaps
Diffstat (limited to 'app')
-rw-r--r--app/helpers/atom_builder_helper.rb1
-rw-r--r--app/models/block.rb4
-rw-r--r--app/models/favourite.rb2
-rw-r--r--app/models/follow.rb4
-rw-r--r--app/models/follow_request.rb17
-rw-r--r--app/models/stream_entry.rb13
6 files changed, 18 insertions, 23 deletions
diff --git a/app/helpers/atom_builder_helper.rb b/app/helpers/atom_builder_helper.rb
index 5d20f8c2d..08d70b7ac 100644
--- a/app/helpers/atom_builder_helper.rb
+++ b/app/helpers/atom_builder_helper.rb
@@ -191,6 +191,7 @@ module AtomBuilderHelper
           include_author xml, stream_entry.target
         else
           object_type    xml, stream_entry.target.object_type
+          verb           xml, stream_entry.target.verb
           title          xml, stream_entry.target.title
           link_alternate xml, TagManager.instance.url_for(stream_entry.target)
         end
diff --git a/app/models/block.rb b/app/models/block.rb
index c2067c5b8..d0662b685 100644
--- a/app/models/block.rb
+++ b/app/models/block.rb
@@ -18,10 +18,6 @@ class Block < ApplicationRecord
     target_account
   end
 
-  def object_type
-    :person
-  end
-
   def hidden?
     true
   end
diff --git a/app/models/favourite.rb b/app/models/favourite.rb
index cd8e2098c..82f8c5258 100644
--- a/app/models/favourite.rb
+++ b/app/models/favourite.rb
@@ -19,8 +19,6 @@ class Favourite < ApplicationRecord
     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
-
   def thread
     status
   end
diff --git a/app/models/follow.rb b/app/models/follow.rb
index f83490caa..e25c2bc9f 100644
--- a/app/models/follow.rb
+++ b/app/models/follow.rb
@@ -20,10 +20,6 @@ class Follow < ApplicationRecord
     target_account
   end
 
-  def object_type
-    :person
-  end
-
   def title
     destroyed? ? "#{account.acct} is no longer following #{target_account.acct}" : "#{account.acct} started following #{target_account.acct}"
   end
diff --git a/app/models/follow_request.rb b/app/models/follow_request.rb
index 989c2c2a2..080c686e5 100644
--- a/app/models/follow_request.rb
+++ b/app/models/follow_request.rb
@@ -13,7 +13,8 @@ class FollowRequest < ApplicationRecord
   validates :account_id, uniqueness: { scope: :target_account_id }
 
   def authorize!
-    @verb = :authorize
+    @verb   = :authorize
+    @target = clone.freeze
 
     account.follow!(target_account)
     MergeWorker.perform_async(target_account.id, account.id)
@@ -22,7 +23,9 @@ class FollowRequest < ApplicationRecord
   end
 
   def reject!
-    @verb = :reject
+    @verb   = :reject
+    @target = clone.freeze
+
     destroy!
   end
 
@@ -31,11 +34,11 @@ class FollowRequest < ApplicationRecord
   end
 
   def target
-    target_account
-  end
-
-  def object_type
-    :person
+    if destroyed? && @verb
+      @target
+    else
+      target_account
+    end
   end
 
   def hidden?
diff --git a/app/models/stream_entry.rb b/app/models/stream_entry.rb
index e0b85be15..bb68b1e14 100644
--- a/app/models/stream_entry.rb
+++ b/app/models/stream_entry.rb
@@ -6,10 +6,11 @@ class StreamEntry < ApplicationRecord
   belongs_to :account, inverse_of: :stream_entries
   belongs_to :activity, polymorphic: true
 
-  belongs_to :status,    foreign_type: 'Status',    foreign_key: 'activity_id'
-  belongs_to :follow,    foreign_type: 'Follow',    foreign_key: 'activity_id'
-  belongs_to :favourite, foreign_type: 'Favourite', foreign_key: 'activity_id'
-  belongs_to :block,     foreign_type: 'Block',     foreign_key: 'activity_id'
+  belongs_to :status,         foreign_type: 'Status',        foreign_key: 'activity_id'
+  belongs_to :follow,         foreign_type: 'Follow',        foreign_key: 'activity_id'
+  belongs_to :favourite,      foreign_type: 'Favourite',     foreign_key: 'activity_id'
+  belongs_to :block,          foreign_type: 'Block',         foreign_key: 'activity_id'
+  belongs_to :follow_request, foreign_type: 'FollowRequest', foreign_key: 'activity_id'
 
   validates :account, :activity, presence: true
 
@@ -30,7 +31,7 @@ class StreamEntry < ApplicationRecord
   end
 
   def targeted?
-    [:follow, :request_friend, :authorize, :unfollow, :block, :unblock, :share, :favorite].include? verb
+    [:follow, :request_friend, :authorize, :reject, :unfollow, :block, :unblock, :share, :favorite].include? verb
   end
 
   def target
@@ -58,7 +59,7 @@ class StreamEntry < ApplicationRecord
   end
 
   def activity
-    !new_record? ? send(activity_type.downcase) : super
+    !new_record? ? send(activity_type.underscore) : super
   end
 
   private