The code powering m.abunchtell.com https://m.abunchtell.com
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 

57 rindas
1.0 KiB

  1. # frozen_string_literal: true
  2. class StatusFilter
  3. attr_reader :status, :account
  4. def initialize(status, account)
  5. @status = status
  6. @account = account
  7. end
  8. def filtered?
  9. blocked_by_policy? || (account_present? && filtered_status?) || silenced_account?
  10. end
  11. private
  12. def account_present?
  13. !account.nil?
  14. end
  15. def filtered_status?
  16. blocking_account? || blocking_domain? || muting_account?
  17. end
  18. def blocking_account?
  19. account.blocking? status.account_id
  20. end
  21. def blocking_domain?
  22. account.domain_blocking? status.account_domain
  23. end
  24. def muting_account?
  25. account.muting? status.account_id
  26. end
  27. def silenced_account?
  28. status_account_silenced? && !account_following_status_account?
  29. end
  30. def status_account_silenced?
  31. status.account.silenced?
  32. end
  33. def account_following_status_account?
  34. account&.following? status.account_id
  35. end
  36. def blocked_by_policy?
  37. !policy_allows_show?
  38. end
  39. def policy_allows_show?
  40. StatusPolicy.new(account, status).show?
  41. end
  42. end