From 67b35a601ad88cd052ceae8d99c1e6df199cf50b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 15 Oct 2016 13:48:38 +0200 Subject: Exclude blocked users from follow suggestions, fix tests --- app/assets/javascripts/components/reducers/timelines.jsx | 4 ++++ app/models/follow_suggestion.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/assets/javascripts/components/reducers/timelines.jsx b/app/assets/javascripts/components/reducers/timelines.jsx index 9fb84b585..d4c6d43b4 100644 --- a/app/assets/javascripts/components/reducers/timelines.jsx +++ b/app/assets/javascripts/components/reducers/timelines.jsx @@ -164,6 +164,10 @@ function normalizeAccount(state, account, relationship) { }; function normalizeRelationship(state, relationship) { + if (state.get('suggestions').includes(relationship.get('id')) && (relationship.get('following') || relationship.get('blocking'))) { + state = state.update('suggestions', list => list.filterNot(id => id === relationship.get('id'))); + } + return state.setIn(['relationships', relationship.get('id')], relationship); }; diff --git a/app/models/follow_suggestion.rb b/app/models/follow_suggestion.rb index c14dba672..108a948a2 100644 --- a/app/models/follow_suggestion.rb +++ b/app/models/follow_suggestion.rb @@ -2,7 +2,7 @@ class FollowSuggestion def self.get(for_account_id, limit = 6) neo = Neography::Rest.new account_ids = neo.execute_query('START a=node:account_index(Account={id}) MATCH (a)-[:follows]->(b)-[:follows]->(c) WHERE a <> c AND NOT (a)-[:follows]->(c) RETURN DISTINCT c.account_id', id: for_account_id) - Account.where(id: account_ids['data'].map(&:first)).limit(limit) unless account_ids.empty? + Account.where(id: account_ids['data'].map(&:first) - Block.where(account_id: for_account_id).pluck(:target_account_id)).limit(limit) unless account_ids.empty? rescue Neography::NeographyError, Excon::Error::Socket => e Rails.logger.error e [] -- cgit