logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: 67b35a601ad88cd052ceae8d99c1e6df199cf50b
parent: aa9d48343d85449e96c6002131b45be4becd2c0d
Author: Eugen Rochko <eugen@zeonfederated.com>
Date:   Sat, 15 Oct 2016 13:48:38 +0200

Exclude blocked users from follow suggestions, fix tests

Diffstat:

M.travis.yml5++++-
Mapp/assets/javascripts/components/reducers/timelines.jsx4++++
Mapp/models/follow_suggestion.rb2+-
Mspec/rails_helper.rb2+-
4 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/.travis.yml b/.travis.yml @@ -6,6 +6,8 @@ env: - LOCAL_DOMAIN=cb6e6126.ngrok.io - LOCAL_HTTPS=true - RAILS_ENV=test + - NEO4J_HOST=localhost + - NEO4J_PORT=7575 addons: postgresql: 9.4 @@ -20,8 +22,9 @@ bundler_args: --without development production --retry=3 --jobs=3 install: - npm install -g npm@3 - - npm install + - npm install -g yarn - bundle install + - yarn install before_script: - bundle exec rails db:create db:migrate diff --git 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 @@ -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 [] diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb @@ -9,7 +9,7 @@ require 'webmock/rspec' require 'paperclip/matchers' ActiveRecord::Migration.maintain_test_schema! -WebMock.disable_net_connect! +WebMock.disable_net_connect!(allow: 'localhost:7575') Sidekiq::Testing.inline! RSpec.configure do |config|