about summary refs log tree commit diff
path: root/app/services/block_service.rb
diff options
context:
space:
mode:
authornicolas <nclm@users.noreply.github.com>2016-11-24 20:13:30 +0100
committerGitHub <noreply@github.com>2016-11-24 20:13:30 +0100
commit60577f4c6ee9f4a4c9af0a41a8954e19a5f2c8cf (patch)
tree8c661ea7ceaff780965631c530ca065805c1861d /app/services/block_service.rb
parent5e33445c5ff9ded56c2d40eb17d89ace108c3840 (diff)
parent8e34bed7cce7b97388e55fabacee7d424b5846ea (diff)
Merge branch 'master' into french-translation
Diffstat (limited to 'app/services/block_service.rb')
-rw-r--r--app/services/block_service.rb18
1 files changed, 13 insertions, 5 deletions
diff --git a/app/services/block_service.rb b/app/services/block_service.rb
index 388a592e0..6a032a5a1 100644
--- a/app/services/block_service.rb
+++ b/app/services/block_service.rb
@@ -6,19 +6,27 @@ class BlockService < BaseService
 
     UnfollowService.new.call(account, target_account) if account.following?(target_account)
     account.block!(target_account)
-    clear_mentions(account, target_account)
+    clear_timelines(account, target_account)
+    clear_notifications(account, target_account)
   end
 
   private
 
-  def clear_mentions(account, target_account)
-    timeline_key = FeedManager.instance.key(:mentions, account.id)
+  def clear_timelines(account, target_account)
+    mentions_key = FeedManager.instance.key(:mentions, account.id)
+    home_key     = FeedManager.instance.key(:home, account.id)
 
     target_account.statuses.select('id').find_each do |status|
-      redis.zrem(timeline_key, status.id)
+      redis.zrem(mentions_key, status.id)
+      redis.zrem(home_key, status.id)
     end
+  end
 
-    FeedManager.instance.broadcast(account.id, type: 'block', id: target_account.id)
+  def clear_notifications(account, target_account)
+    Notification.where(account: account).joins(:follow).where(activity_type: 'Follow', follows: { account_id: target_account.id }).destroy_all
+    Notification.where(account: account).joins(mention: :status).where(activity_type: 'Mention', statuses: { account_id: target_account.id }).destroy_all
+    Notification.where(account: account).joins(:favourite).where(activity_type: 'Favourite', favourites: { account_id: target_account.id }).destroy_all
+    Notification.where(account: account).joins(:status).where(activity_type: 'Status', statuses: { account_id: target_account.id }).destroy_all
   end
 
   def redis