[#3213] Made Object.hashtags/1 work with :hashtags assoc. Adjusted tests.
This commit is contained in:
parent
4134abef63
commit
14fae94c0e
|
@ -96,6 +96,8 @@ def restrict_unauthenticated_access?(resource, kind) do
|
|||
end
|
||||
end
|
||||
|
||||
def object_embedded_hashtags?, do: !get([:instance, :improved_hashtag_timeline])
|
||||
|
||||
def oauth_consumer_strategies, do: get([:auth, :oauth_consumer_strategies], [])
|
||||
|
||||
def oauth_consumer_enabled?, do: oauth_consumer_strategies() != []
|
||||
|
|
|
@ -384,7 +384,19 @@ def tags(%Object{data: %{"tag" => tags}}) when is_list(tags), do: tags
|
|||
|
||||
def tags(_), do: []
|
||||
|
||||
def hashtags(object), do: embedded_hashtags(object)
|
||||
def hashtags(%Object{} = object) do
|
||||
cond do
|
||||
Config.object_embedded_hashtags?() ->
|
||||
embedded_hashtags(object)
|
||||
|
||||
object.id == "pleroma:fake_object_id" ->
|
||||
[]
|
||||
|
||||
true ->
|
||||
hashtag_records = Repo.preload(object, :hashtags).hashtags
|
||||
Enum.map(hashtag_records, & &1.name)
|
||||
end
|
||||
end
|
||||
|
||||
defp embedded_hashtags(%Object{data: data}) do
|
||||
object_data_hashtags(data)
|
||||
|
|
|
@ -1199,16 +1199,16 @@ def fetch_activities_query(recipients, opts \\ %{}) do
|
|||
|> exclude_invisible_actors(opts)
|
||||
|> exclude_visibility(opts)
|
||||
|
||||
if Config.get([:instance, :improved_hashtag_timeline]) do
|
||||
query
|
||||
|> restrict_hashtag_any(opts)
|
||||
|> restrict_hashtag_all(opts)
|
||||
|> restrict_hashtag_reject_any(opts)
|
||||
else
|
||||
if Config.object_embedded_hashtags?() do
|
||||
query
|
||||
|> restrict_tag(opts)
|
||||
|> restrict_tag_reject(opts)
|
||||
|> restrict_tag_all(opts)
|
||||
else
|
||||
query
|
||||
|> restrict_hashtag_any(opts)
|
||||
|> restrict_hashtag_all(opts)
|
||||
|> restrict_hashtag_reject_any(opts)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -11,6 +11,8 @@ defmodule Pleroma.Activity.Ir.TopicsTest do
|
|||
|
||||
require Pleroma.Constants
|
||||
|
||||
import Mock
|
||||
|
||||
describe "poll answer" do
|
||||
test "produce no topics" do
|
||||
activity = %Activity{object: %Object{data: %{"type" => "Answer"}}}
|
||||
|
@ -77,14 +79,13 @@ test "with no attachments doesn't produce public:media topics", %{activity: acti
|
|||
refute Enum.member?(topics, "public:local:media")
|
||||
end
|
||||
|
||||
test "converts tags to hash tags", %{activity: %{object: %{data: data} = object} = activity} do
|
||||
tagged_data = Map.put(data, "tag", ["foo", "bar"])
|
||||
activity = %{activity | object: %{object | data: tagged_data}}
|
||||
test "converts tags to hash tags", %{activity: activity} do
|
||||
with_mock(Object, [:passthrough], hashtags: fn _ -> ["foo", "bar"] end) do
|
||||
topics = Topics.get_activity_topics(activity)
|
||||
|
||||
topics = Topics.get_activity_topics(activity)
|
||||
|
||||
assert Enum.member?(topics, "hashtag:foo")
|
||||
assert Enum.member?(topics, "hashtag:bar")
|
||||
assert Enum.member?(topics, "hashtag:foo")
|
||||
assert Enum.member?(topics, "hashtag:bar")
|
||||
end
|
||||
end
|
||||
|
||||
test "only converts strings to hash tags", %{
|
||||
|
|
Loading…
Reference in a new issue