commit: 2c9e672ee2437677d6e39383e5f8e8e0837024b9
parent: 9d59d7b463e7f31ceedf27775a7ee3e8e071b4a1
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Mon, 3 Oct 2016 17:16:58 +0200
Integrating block relationships into the API (read-only for now)
Diffstat:
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb
@@ -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
diff --git 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)