fix tags
authorMaksim Pechnikov <parallel588@gmail.com>
Thu, 13 Dec 2018 12:13:02 +0000 (15:13 +0300)
committerMaksim Pechnikov <parallel588@gmail.com>
Fri, 14 Dec 2018 19:09:04 +0000 (22:09 +0300)
lib/pleroma/web/mastodon_api/views/status_view.ex
test/web/mastodon_api/status_view_test.exs

index c3c735d5d52c53af3ad83ca012cca0436d248f10..f2a47f594aa182903a4ff53656150525b523de14 100644 (file)
@@ -140,7 +140,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
       visibility: get_visibility(object),
       media_attachments: attachments |> Enum.take(4),
       mentions: mentions,
-      tags: tags,
+      tags: build_tags(tags),
       application: %{
         name: "Web",
         website: nil
@@ -234,6 +234,25 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
 
   def render_content(object), do: object["content"] || ""
 
+  @doc """
+  Builds a dictionary tags.
+
+  ## Examples
+
+  iex> Pleroma.Web.MastodonAPI.StatusView.build_tags(["fediverse", "nextcloud"])
+  [{"name": "fediverse", "url": "/tag/fediverse"},
+   {"name": "nextcloud", "url": "/tag/nextcloud"}]
+
+  """
+  @spec build_tags(list(String.t())) :: list(map())
+  def build_tags(object_tags) when is_list(object_tags) do
+    Enum.reduce(object_tags, [], fn tag, tags ->
+      tags ++ [%{name: tag, url: "/tag/#{tag}"}]
+    end)
+  end
+
+  def build_tags(_), do: []
+
   @doc """
   Builds list emojis.
 
index d10d59d6c75cdbb6ee0d501135372c6d103ee952..4f9805c78cc446e0f571a73747b1795152cb0ef1 100644 (file)
@@ -62,7 +62,12 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do
       visibility: "public",
       media_attachments: [],
       mentions: [],
-      tags: note.data["object"]["tag"],
+      tags: [
+        %{
+          name: "#{note.data["object"]["tag"]}",
+          url: "/tag/#{note.data["object"]["tag"]}"
+        }
+      ],
       application: %{
         name: "Web",
         website: nil
@@ -151,4 +156,14 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do
     assert represented[:reblog][:id] == to_string(activity.id)
     assert represented[:emojis] == []
   end
+
+  describe "build_tags/1" do
+    test "it returns a a dictionary tags" do
+      assert StatusView.build_tags(["fediverse", "mastodon", "nextcloud"]) == [
+               %{name: "fediverse", url: "/tag/fediverse"},
+               %{name: "mastodon", url: "/tag/mastodon"},
+               %{name: "nextcloud", url: "/tag/nextcloud"}
+             ]
+    end
+  end
 end