Merge branch 'features/pleroma-tan' into 'develop'
[akkoma] / lib / pleroma / emoji.ex
index cc9713b5349a22951121a9b1983b787dbc753e18..f3f08cd9dcf15f119a50c25c227289e39a1fc499 100644 (file)
@@ -1,3 +1,7 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
 defmodule Pleroma.Emoji do
   @moduledoc """
   The emojis are loaded from:
@@ -10,16 +14,16 @@ defmodule Pleroma.Emoji do
   """
   use GenServer
   @ets __MODULE__.Ets
-  @ets_options [:set, :protected, :named_table, {:read_concurrency, true}]
+  @ets_options [:ordered_set, :protected, :named_table, {:read_concurrency, true}]
 
   @doc false
-  def start_link() do
+  def start_link do
     GenServer.start_link(__MODULE__, [], name: __MODULE__)
   end
 
   @doc "Reloads the emojis from disk."
   @spec reload() :: :ok
-  def reload() do
+  def reload do
     GenServer.call(__MODULE__, :reload)
   end
 
@@ -34,18 +38,19 @@ defmodule Pleroma.Emoji do
 
   @doc "Returns all the emojos!!"
   @spec get_all() :: [{String.t(), String.t()}, ...]
-  def get_all() do
+  def get_all do
     :ets.tab2list(@ets)
   end
 
   @doc false
   def init(_) do
     @ets = :ets.new(@ets, @ets_options)
-    {:ok, nil, {:continue, :reload}}
+    GenServer.cast(self(), :reload)
+    {:ok, nil}
   end
 
   @doc false
-  def handle_continue(:reload, state) do
+  def handle_cast(:reload, state) do
     load()
     {:noreply, state}
   end
@@ -67,7 +72,7 @@ defmodule Pleroma.Emoji do
     {:ok, state}
   end
 
-  defp load() do
+  defp load do
     emojis =
       (load_finmoji(Keyword.get(Application.get_env(:pleroma, :instance), :finmoji_enabled)) ++
          load_from_file("config/emoji.txt") ++
@@ -152,7 +157,7 @@ defmodule Pleroma.Emoji do
     end)
   end
 
-  defp load_finmoji(_), do: :ok
+  defp load_finmoji(_), do: []
 
   defp load_from_file(file) do
     if File.exists?(file) do
@@ -164,7 +169,7 @@ defmodule Pleroma.Emoji do
 
   defp load_from_file_stream(stream) do
     stream
-    |> Stream.map(&String.strip/1)
+    |> Stream.map(&String.trim/1)
     |> Stream.map(fn line ->
       case String.split(line, ~r/,\s*/) do
         [name, file] -> {name, file}