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