From caec7b5ca7061235dd46bcfa08020baff01e3fd6 Mon Sep 17 00:00:00 2001 From: multiple creatures Date: Sun, 18 Aug 2019 15:07:15 -0500 Subject: fix custom filter logic --- app/helpers/filter_helper.rb | 13 ++++++++----- app/lib/status_filter.rb | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) (limited to 'app') diff --git a/app/helpers/filter_helper.rb b/app/helpers/filter_helper.rb index b2b78bc44..079075a97 100644 --- a/app/helpers/filter_helper.rb +++ b/app/helpers/filter_helper.rb @@ -6,8 +6,11 @@ module FilterHelper return !(redis.hexists("custom_cw:#{receiver_id}", status.id) || redis.hexists("custom_cw:#{receiver_id}", "c#{status.conversation_id}")) end - filters = cached_filters(receiver_id) - filters.select! { |filter| filter.context.include?(context.to_s) && !filter.expired? } + filters = cached_filters(receiver_id).select { |filter| !filter.expired? } + + unless context.nil? + filters.select! { |filter| filter.context.include?(context.to_s) && !filter.expired? } + end if status.media_attachments.any? filters.delete_if { |filter| filter.exclude_media } @@ -33,9 +36,9 @@ module FilterHelper end matched = false - matched = true unless regex.match(status_text).nil? - matched = true unless spoiler_text.blank? || regex.match(spoiler_text).nil? - matched = true unless tags.empty? || regex.match(tags).nil? + matched ||= regex.match(status_text).present? if filter.status_text + matched ||= regex.match(spoiler_text).present? if filter.spoiler && spoiler_text.present? + matched ||= regex.match(tags).present? if filter.tags && tags.present? if matched filter_thread(receiver_id, status.conversation_id) if filter.thread && filter.custom_cw.blank? diff --git a/app/lib/status_filter.rb b/app/lib/status_filter.rb index a28c8282a..d70ed1d21 100644 --- a/app/lib/status_filter.rb +++ b/app/lib/status_filter.rb @@ -34,7 +34,7 @@ class StatusFilter return true if account.user_hides_replies_of_blocker? && reply_to_blocker? # filtered by user? - return true if phrase_filtered?(status, account.id, 'thread') + return true if phrase_filtered?(status, account.id, nil) # kajiht has no filters if status has no mentions return false if status&.mentions.blank? -- cgit