Browse Source

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.
tags/v0.9.9
Jorty 6 years ago
parent
commit
748fff6544
3 changed files with 24 additions and 28 deletions
  1. +1
    -1
      config/config.exs
  2. +22
    -1
      lib/pleroma/formatter.ex
  3. +1
    -26
      lib/pleroma/web/twitter_api/controllers/util_controller.ex

+ 1
- 1
config/config.exs View File

@@ -12,7 +12,7 @@ config :pleroma, Pleroma.Repo, types: Pleroma.PostgresTypes

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
config :pleroma, Pleroma.Web.Endpoint,


+ 22
- 1
lib/pleroma/formatter.ex View File

@@ -116,7 +116,28 @@ defmodule Pleroma.Formatter do
_ -> []
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, nil), do: text


+ 1
- 26
lib/pleroma/web/twitter_api/controllers/util_controller.ex View File

@@ -173,32 +173,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
end

def emoji(conn, _params) do
static_dir = Path.join(:code.priv_dir(:pleroma), "static")

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)
json(conn, Enum.into(Formatter.get_custom_emoji(), %{}))
end

def follow_import(conn, %{"list" => %Plug.Upload{} = listfile}) do


Loading…
Cancel
Save