forked from mirrors/akkoma
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:
parent
c171f9790b
commit
748fff6544
3 changed files with 24 additions and 28 deletions
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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…
Reference in a new issue