)
end
- # Essentially, either look for activities addressed to `recipients`, _OR_ ones
- # that reference a hashtag that the user follows
- # Firstly, two fallbacks in case there's no hashtag constraint, or the user doesn't
- # follow any
- defp restrict_recipients_or_hashtags(query, recipients, user, nil) do
- restrict_recipients(query, recipients, user)
- end
-
- defp restrict_recipients_or_hashtags(query, recipients, user, []) do
- restrict_recipients(query, recipients, user)
- end
-
- defp restrict_recipients_or_hashtags(query, recipients, _user, hashtag_ids) do
- from(
- [activity, object] in query,
- join: hto in "hashtags_objects",
- on: hto.object_id == object.id,
- where:
- (hto.hashtag_id in ^hashtag_ids and ^Constants.as_public() in activity.recipients) or
- fragment("? && ?", ^recipients, activity.recipients)
- )
- end
-
defp restrict_local(query, %{local_only: true}) do
from(activity in query, where: activity.local == true)
end
|> maybe_preload_report_notes(opts)
|> maybe_set_thread_muted_field(opts)
|> maybe_order(opts)
- |> restrict_recipients_or_hashtags(recipients, opts[:user], opts[:followed_hashtags])
+ |> restrict_recipients(recipients, opts[:user])
|> restrict_replies(opts)
|> restrict_since(opts)
|> restrict_local(opts)