end
def following
- @following = @account.following
+ @accounts = @account.following
+ render action: :index
end
def followers
- @followers = @account.followers
+ @accounts = @account.followers
+ render action: :index
+ end
+
+ def common_followers
+ @accounts = @account.common_followers_with(current_user.account)
+ render action: :index
end
def suggestions
@accounts = FollowSuggestion.get(current_user.account_id)
+ render action: :index
end
def statuses
username
end
+ def common_followers_with(other_account)
+ results = Neography::Rest.new.execute_query('MATCH (a {account_id: {a_id}})-[:follows]->(b)-[:follows]->(c {account_id: {c_id}}) RETURN b.account_id', a_id: id, c_id: other_account.id)
+ ids = results['data'].map(&:first)
+ accounts = self.where(id: ids).with_counters.map { |a| [a.id, a] }.to_h
+ ids.map { |id| accounts[id] }.compact
+ rescue Neography::NeographyError, Excon::Error::Socket
+ []
+ end
+
def self.find_local!(username)
find_remote!(username, nil)
end