Also run the keyword matcher on a status' tags. #208.

master
David Yip 7 years ago
parent 04508868b0
commit 431503bae2
  1. 8
      app/lib/feed_manager.rb
  2. 16
      spec/lib/feed_manager_spec.rb

@ -173,10 +173,14 @@ class FeedManager
def keyword_filter?(status, matcher)
should_filter = matcher =~ status.text
should_filter ||= matcher =~ status.spoiler_text
should_filter ||= status.tags.find_each.any? { |t| matcher =~ t.name }
if status.reblog?
should_filter ||= matcher =~ status.reblog.text
should_filter ||= matcher =~ status.reblog.spoiler_text
reblog = status.reblog
should_filter ||= matcher =~ reblog.text
should_filter ||= matcher =~ reblog.spoiler_text
should_filter ||= reblog.tags.find_each.any? { |t| matcher =~ t.name }
end
!!should_filter

@ -164,6 +164,22 @@ RSpec.describe FeedManager do
expect(FeedManager.instance.filter?(:home, reblog, alice.id)).to be true
end
it 'returns true for a status with a tag that matches a muted keyword' do
Fabricate('Glitch::KeywordMute', account: alice, keyword: 'jorts')
status = Fabricate(:status, account: bob)
status.tags << Fabricate(:tag, name: 'jorts')
expect(FeedManager.instance.filter?(:home, status, alice.id)).to be true
end
it 'returns true for a status with a tag that matches an octothorpe-prefixed muted keyword' do
Fabricate('Glitch::KeywordMute', account: alice, keyword: '#jorts')
status = Fabricate(:status, account: bob)
status.tags << Fabricate(:tag, name: 'jorts')
expect(FeedManager.instance.filter?(:home, status, alice.id)).to be true
end
end
context 'for mentions feed' do

Loading…
Cancel
Save