Browse Source

fix tags

tags/v0.9.9
Maksim Pechnikov 5 years ago
parent
commit
d3ec09bb38
2 changed files with 36 additions and 2 deletions
  1. +20
    -1
      lib/pleroma/web/mastodon_api/views/status_view.ex
  2. +16
    -1
      test/web/mastodon_api/status_view_test.exs

+ 20
- 1
lib/pleroma/web/mastodon_api/views/status_view.ex View 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
@@ -235,6 +235,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.

Arguments: `nil` or list tuple of name and url.


+ 16
- 1
test/web/mastodon_api/status_view_test.exs View 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

Loading…
Cancel
Save