about summary refs log tree commit diff
path: root/app/workers/feed_insert_worker.rb
diff options
context:
space:
mode:
authorDavid Yip <yipdw@member.fsf.org>2017-11-17 17:40:00 -0600
committerDavid Yip <yipdw@member.fsf.org>2017-11-17 17:40:00 -0600
commit1ab12ba38ebd42be93b63b7cf0d3c6a81060b741 (patch)
tree3899389c63c16e33dd48fadb270d3259a7c15b67 /app/workers/feed_insert_worker.rb
parent6f8ccbfcdf7fd8ca651d1583a608e96b25a09e25 (diff)
parent24cafd73a2b644025e9aeaadf4fed46dd3ecea4d (diff)
Merge remote-tracking branch 'origin/master' into merge-upstream
Diffstat (limited to 'app/workers/feed_insert_worker.rb')
-rw-r--r--app/workers/feed_insert_worker.rb39
1 files changed, 23 insertions, 16 deletions
diff --git a/app/workers/feed_insert_worker.rb b/app/workers/feed_insert_worker.rb
index 65c02d3ef..1ae3c877b 100644
--- a/app/workers/feed_insert_worker.rb
+++ b/app/workers/feed_insert_worker.rb
@@ -3,34 +3,41 @@
 class FeedInsertWorker
   include Sidekiq::Worker
 
-  attr_reader :status, :follower
-
-  def perform(status_id, follower_id)
-    @status = Status.find_by(id: status_id)
-    @follower = Account.find_by(id: follower_id)
+  def perform(status_id, id, type = :home)
+    @type     = type.to_sym
+    @status   = Status.find(status_id)
+
+    case @type
+    when :home
+      @follower = Account.find(id)
+    when :list
+      @list     = List.find(id)
+      @follower = @list.account
+    end
 
     check_and_insert
+  rescue ActiveRecord::RecordNotFound
+    true
   end
 
   private
 
   def check_and_insert
-    if records_available?
-      perform_push unless feed_filtered?
-    else
-      true
-    end
-  end
-
-  def records_available?
-    status.present? && follower.present?
+    perform_push unless feed_filtered?
   end
 
   def feed_filtered?
-    FeedManager.instance.filter?(:home, status, follower.id)
+    # Note: Lists are a variation of home, so the filtering rules
+    # of home apply to both
+    FeedManager.instance.filter?(:home, @status, @follower.id)
   end
 
   def perform_push
-    FeedManager.instance.push(:home, follower, status)
+    case @type
+    when :home
+      FeedManager.instance.push_to_home(@follower, @status)
+    when :list
+      FeedManager.instance.push_to_list(@list, @status)
+    end
   end
 end