forked from AkkomaGang/akkoma
Save tags in object.
This commit is contained in:
parent
9033bfffd2
commit
0da6ade619
3 changed files with 11 additions and 6 deletions
|
@ -36,7 +36,8 @@ def create_status(%User{} = user, %{"status" => status} = data) do
|
||||||
to <- to_for_user_and_mentions(user, mentions, inReplyTo),
|
to <- to_for_user_and_mentions(user, mentions, inReplyTo),
|
||||||
content_html <- make_content_html(status, mentions, attachments),
|
content_html <- make_content_html(status, mentions, attachments),
|
||||||
context <- make_context(inReplyTo),
|
context <- make_context(inReplyTo),
|
||||||
object <- make_note_data(user.ap_id, to, context, content_html, attachments, inReplyTo) do
|
tags <- Formatter.parse_tags(status),
|
||||||
|
object <- make_note_data(user.ap_id, to, context, content_html, attachments, inReplyTo, tags) do
|
||||||
ActivityPub.create(to, user, context, object)
|
ActivityPub.create(to, user, context, object)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -11,7 +11,7 @@ def attachments_from_ids(ids) do
|
||||||
def add_attachments(text, attachments) do
|
def add_attachments(text, attachments) do
|
||||||
attachment_text = Enum.map(attachments, fn
|
attachment_text = Enum.map(attachments, fn
|
||||||
(%{"url" => [%{"href" => href} | _]}) ->
|
(%{"url" => [%{"href" => href} | _]}) ->
|
||||||
"<a href='#{href}' class='attachment'>#{href}</a>"
|
"<a href='#{href}' class='attachment'>#{Path.basename(href)}</a>"
|
||||||
_ -> ""
|
_ -> ""
|
||||||
end)
|
end)
|
||||||
Enum.join([text | attachment_text], "<br>")
|
Enum.join([text | attachment_text], "<br>")
|
||||||
|
@ -51,14 +51,15 @@ def make_content_html(status, mentions, attachments) do
|
||||||
def make_context(%Activity{data: %{"context" => context}}), do: context
|
def make_context(%Activity{data: %{"context" => context}}), do: context
|
||||||
def make_context(_), do: Utils.generate_context_id
|
def make_context(_), do: Utils.generate_context_id
|
||||||
|
|
||||||
def make_note_data(actor, to, context, content_html, attachments, inReplyTo) do
|
def make_note_data(actor, to, context, content_html, attachments, inReplyTo, tags) do
|
||||||
object = %{
|
object = %{
|
||||||
"type" => "Note",
|
"type" => "Note",
|
||||||
"to" => to,
|
"to" => to,
|
||||||
"content" => content_html,
|
"content" => content_html,
|
||||||
"context" => context,
|
"context" => context,
|
||||||
"attachment" => attachments,
|
"attachment" => attachments,
|
||||||
"actor" => actor
|
"actor" => actor,
|
||||||
|
"tag" => tags |> Enum.map(fn ({_, tag}) -> tag end)
|
||||||
}
|
}
|
||||||
|
|
||||||
if inReplyTo do
|
if inReplyTo do
|
||||||
|
|
|
@ -28,13 +28,13 @@ test "create a status" do
|
||||||
object = Repo.insert!(%Object{data: object_data})
|
object = Repo.insert!(%Object{data: object_data})
|
||||||
|
|
||||||
input = %{
|
input = %{
|
||||||
"status" => "Hello again, @shp.<script></script>\nThis is on another line.",
|
"status" => "Hello again, @shp.<script></script>\nThis is on another line. #2hu #epic #phantasmagoric",
|
||||||
"media_ids" => [object.id]
|
"media_ids" => [object.id]
|
||||||
}
|
}
|
||||||
|
|
||||||
{ :ok, activity = %Activity{} } = TwitterAPI.create_status(user, input)
|
{ :ok, activity = %Activity{} } = TwitterAPI.create_status(user, input)
|
||||||
|
|
||||||
assert get_in(activity.data, ["object", "content"]) == "Hello again, <a href='shp'>@shp</a>.<br>This is on another line.<br><a href='http://example.org/image.jpg' class='attachment'>http://example.org/image.jpg</a>"
|
assert get_in(activity.data, ["object", "content"]) == "Hello again, <a href='shp'>@shp</a>.<br>This is on another line. #2hu #epic #phantasmagoric<br><a href='http://example.org/image.jpg' class='attachment'>image.jpg</a>"
|
||||||
assert get_in(activity.data, ["object", "type"]) == "Note"
|
assert get_in(activity.data, ["object", "type"]) == "Note"
|
||||||
assert get_in(activity.data, ["object", "actor"]) == user.ap_id
|
assert get_in(activity.data, ["object", "actor"]) == user.ap_id
|
||||||
assert get_in(activity.data, ["actor"]) == user.ap_id
|
assert get_in(activity.data, ["actor"]) == user.ap_id
|
||||||
|
@ -43,6 +43,9 @@ test "create a status" do
|
||||||
assert Enum.member?(get_in(activity.data, ["to"]), "shp")
|
assert Enum.member?(get_in(activity.data, ["to"]), "shp")
|
||||||
assert activity.local == true
|
assert activity.local == true
|
||||||
|
|
||||||
|
# hashtags
|
||||||
|
assert activity.data["object"]["tag"] == ["2hu", "epic", "phantasmagoric"]
|
||||||
|
|
||||||
# Add a context
|
# Add a context
|
||||||
assert is_binary(get_in(activity.data, ["context"]))
|
assert is_binary(get_in(activity.data, ["context"]))
|
||||||
assert is_binary(get_in(activity.data, ["object", "context"]))
|
assert is_binary(get_in(activity.data, ["object", "context"]))
|
||||||
|
|
Loading…
Reference in a new issue