Integrating block relationships into the API (read-only for now)
This commit is contained in:
		
							parent
							
								
									9d59d7b463
								
							
						
					
					
						commit
						2c9e672ee2
					
				@ -40,7 +40,7 @@ class Api::V1::AccountsController < ApiController
 | 
			
		||||
    @accounts    = Account.find(ids)
 | 
			
		||||
    @following   = Account.following_map(ids, current_user.account_id)
 | 
			
		||||
    @followed_by = Account.followed_by_map(ids, current_user.account_id)
 | 
			
		||||
    @blocking    = {}
 | 
			
		||||
    @blocking    = Account.blocking_map(ids, current_user.account_id)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private
 | 
			
		||||
@ -52,6 +52,6 @@ class Api::V1::AccountsController < ApiController
 | 
			
		||||
  def set_relationship
 | 
			
		||||
    @following   = Account.following_map([@account.id], current_user.account_id)
 | 
			
		||||
    @followed_by = Account.followed_by_map([@account.id], current_user.account_id)
 | 
			
		||||
    @blocking    = {}
 | 
			
		||||
    @blocking    = Account.blocking_map([@account.id], current_user.account_id)
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@ -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)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user