about summary refs log tree commit diff
path: root/app/models/account.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/account.rb')
-rw-r--r--app/models/account.rb13
1 files changed, 13 insertions, 0 deletions
diff --git a/app/models/account.rb b/app/models/account.rb
index 518b55f19..12e7be05d 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -52,11 +52,20 @@ class Account < ApplicationRecord
     active_relationships.where(target_account: other_account).first_or_create!(target_account: other_account)
   end
 
+  def block!(other_account)
+    block_relationships.where(target_account: other_account).first_or_create!(target_account: other_account)
+  end
+
   def unfollow!(other_account)
     follow = active_relationships.find_by(target_account: other_account)
     follow.destroy unless follow.nil?
   end
 
+  def unblock!(other_account)
+    block = block_relationships.find_by(target_account: other_account)
+    block.destroy unless block.nil?
+  end
+
   def following?(other_account)
     following.include?(other_account)
   end
@@ -139,6 +148,10 @@ class Account < ApplicationRecord
     Follow.where(account_id: target_account_ids).where(target_account_id: account_id).map { |f| [f.account_id, true] }.to_h
   end
 
+  def self.blocking_map(target_account_ids, account_id)
+    Block.where(target_account_id: target_account_ids).where(account_id: account_id).map { |b| [b.target_account_id, true] }.to_h
+  end
+
   before_create do
     if local?
       keypair = OpenSSL::PKey::RSA.new(Rails.env.test? ? 1024 : 2048)