Fix auto-shortcode emoji

Emoji were broken due to `Pleroma.Formatter` not knowing about the
auto-shortcode emoji. This moves that logic from
`Pleroma.Web.TwitterAPI.UtilController` to `Pleroma.Formatter`.

Additionally, it's now possible to specify multiple shortcode globs, and
the default globs were changed to `["/emoji/custom/**/*.png"]`, since
that's in the .gitignore and the files there would have to be shortcode
emoji anyway.
This commit is contained in:
Jorty 2018-06-30 20:35:34 -04:00
parent c171f9790b
commit 748fff6544
3 changed files with 24 additions and 28 deletions

View File

@ -12,7 +12,7 @@
config :pleroma, Pleroma.Upload, uploads: "uploads" config :pleroma, Pleroma.Upload, uploads: "uploads"
config :pleroma, :emoji, shortcode_glob: "/emoji/by-shortcode/**/*.png" config :pleroma, :emoji, shortcode_globs: ["/emoji/custom/**/*.png"]
# Configures the endpoint # Configures the endpoint
config :pleroma, Pleroma.Web.Endpoint, config :pleroma, Pleroma.Web.Endpoint,

View File

@ -116,7 +116,28 @@ def parse_mentions(text) do
_ -> [] _ -> []
end) end)
@emoji @finmoji_with_filenames ++ @emoji_from_file @emoji_from_globs (
static_path = Path.join(:code.priv_dir(:pleroma), "static")
globs =
Application.get_env(:pleroma, :emoji, [])
|> Keyword.get(:shortcode_globs, [])
paths =
Enum.map(globs, fn glob ->
Path.join(static_path, glob)
|> Path.wildcard()
end)
|> Enum.concat()
Enum.map(paths, fn path ->
shortcode = Path.basename(path, Path.extname(path))
external_path = Path.join("/", Path.relative_to(path, static_path))
{shortcode, external_path}
end)
)
@emoji @finmoji_with_filenames ++ @emoji_from_globs ++ @emoji_from_file
def emojify(text, emoji \\ @emoji) def emojify(text, emoji \\ @emoji)
def emojify(text, nil), do: text def emojify(text, nil), do: text

View File

@ -173,32 +173,7 @@ def version(conn, _params) do
end end
def emoji(conn, _params) do def emoji(conn, _params) do
static_dir = Path.join(:code.priv_dir(:pleroma), "static") json(conn, Enum.into(Formatter.get_custom_emoji(), %{}))
emoji_shortcode_glob =
Application.get_env(:pleroma, :emoji, [])
|> Keyword.get(:shortcode_glob)
shortcode_emoji =
case emoji_shortcode_glob do
nil ->
[]
glob ->
Path.join(static_dir, glob)
|> Path.wildcard()
|> Enum.map(fn path ->
shortcode = Path.basename(path, ".png")
serve_path = Path.join("/", Path.relative_to(path, static_dir))
{shortcode, serve_path}
end)
end
emoji =
Enum.into(Formatter.get_custom_emoji(), shortcode_emoji)
|> Enum.into(%{})
json(conn, emoji)
end end
def follow_import(conn, %{"list" => %Plug.Upload{} = listfile}) do def follow_import(conn, %{"list" => %Plug.Upload{} = listfile}) do