about summary refs log tree commit diff
path: root/app/services/block_domain_service.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-01-23 17:38:38 +0100
committerEugen Rochko <eugen@zeonfederated.com>2017-01-23 17:38:38 +0100
commit6d98a731803eb37ff36f60ff004acfc4c27ae37b (patch)
tree5ccc79cb65ccc6174aea1c5e0a8452b5076026d9 /app/services/block_domain_service.rb
parentef2b92467977758466f4f19acb3334bee1fde107 (diff)
Domain blocks now have varying severity - auto-suspend vs auto-silence
Diffstat (limited to 'app/services/block_domain_service.rb')
-rw-r--r--app/services/block_domain_service.rb15
1 files changed, 8 insertions, 7 deletions
diff --git a/app/services/block_domain_service.rb b/app/services/block_domain_service.rb
index a8fafe412..9518b1fcf 100644
--- a/app/services/block_domain_service.rb
+++ b/app/services/block_domain_service.rb
@@ -1,15 +1,16 @@
 # frozen_string_literal: true
 
 class BlockDomainService < BaseService
-  def call(domain)
-    DomainBlock.find_or_create_by!(domain: domain)
+  def call(domain, severity)
+    DomainBlock.where(domain: domain).first_or_create!(domain: domain, severity: severity)
 
-    Account.where(domain: domain).find_each do |account|
-      if account.subscribed?
-        account.subscription(api_subscription_url(account.id)).unsubscribe
+    if severity == :silence
+      Account.where(domain: domain).update_all(silenced: true)
+    else
+      Account.where(domain: domain).find_each do |account|
+        account.subscription(api_subscription_url(account.id)).unsubscribe if account.subscribed?
+        SuspendAccountService.new.call(account)
       end
-
-      account.destroy!
     end
   end
 end