diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex
index 202d648e1..6eb69f815 100644
--- a/lib/pleroma/web/twitter_api/twitter_api.ex
+++ b/lib/pleroma/web/twitter_api/twitter_api.ex
@@ -36,7 +36,8 @@ def create_status(%User{} = user, %{"status" => status} = data) do
to <- to_for_user_and_mentions(user, mentions, inReplyTo),
content_html <- make_content_html(status, mentions, attachments),
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)
end
end
diff --git a/lib/pleroma/web/twitter_api/utils.ex b/lib/pleroma/web/twitter_api/utils.ex
index 6f5c9f727..b7078b9c6 100644
--- a/lib/pleroma/web/twitter_api/utils.ex
+++ b/lib/pleroma/web/twitter_api/utils.ex
@@ -11,7 +11,7 @@ def attachments_from_ids(ids) do
def add_attachments(text, attachments) do
attachment_text = Enum.map(attachments, fn
(%{"url" => [%{"href" => href} | _]}) ->
- "#{href}"
+ "#{Path.basename(href)}"
_ -> ""
end)
Enum.join([text | attachment_text], "
")
@@ -51,14 +51,15 @@ def make_content_html(status, mentions, attachments) do
def make_context(%Activity{data: %{"context" => context}}), do: context
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 = %{
"type" => "Note",
"to" => to,
"content" => content_html,
"context" => context,
"attachment" => attachments,
- "actor" => actor
+ "actor" => actor,
+ "tag" => tags |> Enum.map(fn ({_, tag}) -> tag end)
}
if inReplyTo do
diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs
index e20960228..3b6a7a1fe 100644
--- a/test/web/twitter_api/twitter_api_test.exs
+++ b/test/web/twitter_api/twitter_api_test.exs
@@ -28,13 +28,13 @@ test "create a status" do
object = Repo.insert!(%Object{data: object_data})
input = %{
- "status" => "Hello again, @shp.\nThis is on another line.",
+ "status" => "Hello again, @shp.\nThis is on another line. #2hu #epic #phantasmagoric",
"media_ids" => [object.id]
}
{ :ok, activity = %Activity{} } = TwitterAPI.create_status(user, input)
- assert get_in(activity.data, ["object", "content"]) == "Hello again, @shp.
This is on another line.
http://example.org/image.jpg"
+ assert get_in(activity.data, ["object", "content"]) == "Hello again, @shp.
This is on another line. #2hu #epic #phantasmagoric
image.jpg"
assert get_in(activity.data, ["object", "type"]) == "Note"
assert get_in(activity.data, ["object", "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 activity.local == true
+ # hashtags
+ assert activity.data["object"]["tag"] == ["2hu", "epic", "phantasmagoric"]
+
# Add a context
assert is_binary(get_in(activity.data, ["context"]))
assert is_binary(get_in(activity.data, ["object", "context"]))