[WIP,MastoAPI] Multi-tag timelines
This commit is contained in:
parent
6383fa3a5d
commit
f9cae0d04f
@ -426,10 +426,18 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
|
|||||||
|
|
||||||
defp restrict_since(query, _), do: query
|
defp restrict_since(query, _), do: query
|
||||||
|
|
||||||
|
defp restrict_tag(query, %{"tag" => tag, "tag_reject" => tag_reject}) when tag_reject != [] do
|
||||||
|
from(
|
||||||
|
activity in query,
|
||||||
|
where: fragment("? <@ (? #> '{\"object\",\"tag\"}')", ^tag, activity.data),
|
||||||
|
where: fragment("? @> (? #> '{\"object\",\"tag\"}')", ^tag_reject, activity.data)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
defp restrict_tag(query, %{"tag" => tag}) do
|
defp restrict_tag(query, %{"tag" => tag}) do
|
||||||
from(
|
from(
|
||||||
activity in query,
|
activity in query,
|
||||||
where: fragment("? <@ (? #> '{\"object\",\"tag\"}')", ^tag, activity.data)
|
where: fragment("? && jsonb_array_elements_text((? #> '{\"object\",\"tag\"}'))", ^tag, activity.data)
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -540,15 +540,27 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|
|||||||
def hashtag_timeline(%{assigns: %{user: user}} = conn, params) do
|
def hashtag_timeline(%{assigns: %{user: user}} = conn, params) do
|
||||||
local_only = params["local"] in [true, "True", "true", "1"]
|
local_only = params["local"] in [true, "True", "true", "1"]
|
||||||
|
|
||||||
params =
|
tags =
|
||||||
|
([params["tag"]] ++ (params["all"] || []) ++ (params["any"] || []))
|
||||||
|
|> Enum.uniq()
|
||||||
|
|> Enum.filter(& &1)
|
||||||
|
|> Enum.map(&String.downcase(&1))
|
||||||
|
|
||||||
|
tag_reject =
|
||||||
|
params["none"] ||
|
||||||
|
[]
|
||||||
|
|> Enum.map(&String.downcase(&1))
|
||||||
|
|
||||||
|
query_params =
|
||||||
params
|
params
|
||||||
|> Map.put("type", "Create")
|
|> Map.put("type", "Create")
|
||||||
|> Map.put("local_only", local_only)
|
|> Map.put("local_only", local_only)
|
||||||
|> Map.put("blocking_user", user)
|
|> Map.put("blocking_user", user)
|
||||||
|> Map.put("tag", String.downcase(params["tag"]))
|
|> Map.put("tag", tags)
|
||||||
|
|> Map.put("tag_reject", tag_reject)
|
||||||
|
|
||||||
activities =
|
activities =
|
||||||
ActivityPub.fetch_public_activities(params)
|
ActivityPub.fetch_public_activities(query_params)
|
||||||
|> Enum.reverse()
|
|> Enum.reverse()
|
||||||
|
|
||||||
conn
|
conn
|
||||||
|
Loading…
Reference in New Issue
Block a user