Skip to content
Extraits de code Groupes Projets
Valider e3ed212b rédigé par Eugen Rochko's avatar Eugen Rochko
Parcourir les fichiers

Filter statuses that mention blocked users

parent 543d0697
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -68,30 +68,34 @@ class FeedManager ...@@ -68,30 +68,34 @@ class FeedManager
def filter_from_home?(status, receiver) def filter_from_home?(status, receiver)
should_filter = false should_filter = false
if status.reply? && !status.thread.account.nil? # Filter out if it's a reply if status.reply? && !status.thread.account.nil? # Filter out if it's a reply
should_filter = !receiver.following?(status.thread.account) # and I'm not following the person it's a reply to should_filter = !receiver.following?(status.thread.account) # and I'm not following the person it's a reply to
should_filter &&= !(receiver.id == status.thread.account_id) # and it's not a reply to me should_filter &&= !(receiver.id == status.thread.account_id) # and it's not a reply to me
should_filter &&= !(status.account_id == status.thread.account_id) # and it's not a self-reply should_filter &&= !(status.account_id == status.thread.account_id) # and it's not a self-reply
elsif status.reblog? # Filter out a reblog elsif status.reblog? # Filter out a reblog
should_filter = receiver.blocking?(status.reblog.account) # if I'm blocking the reblogged person should_filter = receiver.blocking?(status.reblog.account) # if I'm blocking the reblogged person
end end
should_filter ||= receiver.blocking?(status.mentions.map(&:account_id)) # or if it mentions someone I blocked
should_filter should_filter
end end
def filter_from_mentions?(status, receiver) def filter_from_mentions?(status, receiver)
should_filter = receiver.id == status.account_id # Filter if I'm mentioning myself should_filter = receiver.id == status.account_id # Filter if I'm mentioning myself
should_filter ||= receiver.blocking?(status.account) # or it's from someone I blocked should_filter ||= receiver.blocking?(status.account) # or it's from someone I blocked
should_filter ||= receiver.blocking?(status.mentions.map(&:account_id)) # or if it mentions someone I blocked
if status.reply? && !status.thread.account.nil? # or it's a reply if status.reply? && !status.thread.account.nil? # or it's a reply
should_filter ||= receiver.blocking?(status.thread.account) # to a user I blocked should_filter ||= receiver.blocking?(status.thread.account) # to a user I blocked
end end
should_filter should_filter
end end
def filter_from_public?(status, receiver) def filter_from_public?(status, receiver)
should_filter = receiver.blocking?(status.account) should_filter = receiver.blocking?(status.account)
should_filter ||= receiver.blocking?(status.mentions.map(&:account_id))
if status.reply? && !status.thread.account.nil? if status.reply? && !status.thread.account.nil?
should_filter ||= receiver.blocking?(status.thread.account) should_filter ||= receiver.blocking?(status.thread.account)
......
...@@ -66,12 +66,12 @@ class Account < ApplicationRecord ...@@ -66,12 +66,12 @@ class Account < ApplicationRecord
def unfollow!(other_account) def unfollow!(other_account)
follow = active_relationships.find_by(target_account: other_account) follow = active_relationships.find_by(target_account: other_account)
follow.destroy unless follow.nil? follow&.destroy
end end
def unblock!(other_account) def unblock!(other_account)
block = block_relationships.find_by(target_account: other_account) block = block_relationships.find_by(target_account: other_account)
block.destroy unless block.nil? block&.destroy
end end
def following?(other_account) def following?(other_account)
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter