aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/pleroma_api/views/bookmark_folder_view.ex
blob: 12decb816823fd22ff78242a647ad919ddb9b693 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Pleroma: A lightweight social networking server
# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Pleroma.Web.PleromaAPI.BookmarkFolderView do
  use Pleroma.Web, :view

  alias Pleroma.BookmarkFolder
  alias Pleroma.Emoji
  alias Pleroma.Web.Endpoint

  def render("show.json", %{folder: %BookmarkFolder{} = folder}) do
    %{
      id: folder.id |> to_string(),
      name: folder.name,
      emoji: folder.emoji,
      emoji_url: get_emoji_url(folder.emoji)
    }
  end

  def render("index.json", %{folders: folders} = opts) do
    render_many(folders, __MODULE__, "show.json", Map.delete(opts, :folders))
  end

  defp get_emoji_url(nil) do
    nil
  end

  defp get_emoji_url(emoji) do
    if Emoji.unicode?(emoji) do
      nil
    else
      emoji = Emoji.get(emoji)

      if emoji != nil do
        Endpoint.url() |> URI.merge(emoji.file) |> to_string()
      else
        nil
      end
    end
  end
end