diff --git a/CHANGELOG.md b/CHANGELOG.md
index ca056fc71..ed078bc69 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -24,6 +24,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Mastodon API: [Reports](https://docs.joinmastodon.org/api/rest/reports/)
- ActivityPub C2S: OAuth endpoints
- Metadata RelMe provider
+- Emoji packs and emoji pack manager
### Changed
- **Breaking:** Configuration: move from Pleroma.Mailer to Pleroma.Emails.Mailer
@@ -50,6 +51,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Mastodon API: Remove attachment limit in the Status entity
- Deps: Updated Cowboy to 2.6
- Deps: Updated Ecto to 3.0.7
+- Don't ship finmoji by default, they can be installed as an emoji pack
### Fixed
- Followers counter not being updated when a follower is blocked
diff --git a/COPYING b/COPYING
index ceec519ae..eceb68efe 100644
--- a/COPYING
+++ b/COPYING
@@ -39,10 +39,3 @@ does not include the right to compile photos from Unsplash to replicate
a similar or competing service.
priv/static/images/city.jpg
-
----
-
-The files present under the priv/static/finmoji directory are copyright
-Finland , and are distributed under the Creative
-Commons Attribution-NonCommercial-NoDerivatives 4.0 International license, you
-should have received a copy of the license file as CC-BY-NC-ND-4.0.
diff --git a/config/config.exs b/config/config.exs
index 1114dc84d..9f2244222 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -100,9 +100,9 @@
shortcode_globs: ["/emoji/custom/**/*.png"],
groups: [
# Put groups that have higher priority than defaults here. Example in `docs/config/custom_emoji.md`
- Finmoji: "/finmoji/128px/*-128.png",
- Custom: ["/emoji/*.png", "/emoji/custom/*.png"]
- ]
+ Custom: ["/emoji/*.png", "/emoji/**/*.png"]
+ ],
+ default_manifest: "https://git.pleroma.social/pleroma/emoji-index/raw/master/index.json"
config :pleroma, :uri_schemes,
valid_schemes: [
@@ -223,7 +223,6 @@
"text/html",
"text/markdown"
],
- finmoji_enabled: true,
mrf_transparency: true,
autofollowed_nicknames: [],
max_pinned_statuses: 1,
diff --git a/docs/config.md b/docs/config.md
index 5a97033b2..ccf744f42 100644
--- a/docs/config.md
+++ b/docs/config.md
@@ -87,7 +87,6 @@ config :pleroma, Pleroma.Emails.Mailer,
* `quarantined_instances`: List of ActivityPub instances where private(DMs, followers-only) activities will not be send.
* `managed_config`: Whenether the config for pleroma-fe is configured in this config or in ``static/config.json``
* `allowed_post_formats`: MIME-type list of formats allowed to be posted (transformed into HTML)
-* `finmoji_enabled`: Whenether to enable the finmojis in the custom emojis.
* `mrf_transparency`: Make the content of your Message Rewrite Facility settings public (via nodeinfo).
* `scope_copy`: Copy the scope (private/unlisted/public) in replies to posts by default.
* `subject_line_behavior`: Allows changing the default behaviour of subject lines in replies. Valid values:
diff --git a/docs/config/custom_emoji.md b/docs/config/custom_emoji.md
index 5ce9865a2..ac28635d0 100644
--- a/docs/config/custom_emoji.md
+++ b/docs/config/custom_emoji.md
@@ -1,15 +1,25 @@
# Custom Emoji
+Before you add your own custom emoji, check if they are available in an existing pack.
+See `Mix.Tasks.Pleroma.Emoji` for information about emoji packs.
+
To add custom emoji:
-* Add the image file(s) to `priv/static/emoji/custom`
-* In case of conflicts: add the desired shortcode with the path to `config/custom_emoji.txt`, comma-separated and one per line
-* Force recompilation (``mix clean && mix compile``)
+* Create the `STATIC-DIR/emoji/` directory if it doesn't exist
+ (`STATIC-DIR` is configurable, `instance/static/` by default)
+* Create a directory with whatever name you want (custom is a good name to show the purpose of it).
+ This will create a local emoji pack.
+* Put your `.png` emoji files in that directory. In case of conflicts, you can create an `emoji.txt`
+ file in that directory and specify a custom shortcode using the following format:
+ `shortcode, file-path, tag1, tag2, etc`. One emoji per line. Note that if you do so,
+ you'll have to list all other emojis in the pack too.
+* Either restart pleroma or connect to the iex session pleroma's running and
+ run `Pleroma.Emoji.reload/0` in it.
Example:
-image files (in `/priv/static/emoji/custom`): `happy.png` and `sad.png`
+image files (in `instance/static/emoji/custom`): `happy.png` and `sad.png`
-content of `config/custom_emoji.txt`:
+content of `emoji.txt`:
```
happy, /emoji/custom/happy.png, Tag1,Tag2
sad, /emoji/custom/sad.png, Tag1
diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex
new file mode 100644
index 000000000..2754dd876
--- /dev/null
+++ b/lib/mix/tasks/pleroma/emoji.ex
@@ -0,0 +1,293 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2018 Pleroma Authors
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Mix.Tasks.Pleroma.Emoji do
+ use Mix.Task
+
+ @shortdoc "Manages emoji packs"
+ @moduledoc """
+ Manages emoji packs
+
+ ## ls-packs
+
+ mix pleroma.emoji ls-packs [OPTION...]
+
+ Lists the emoji packs and metadata specified in the manifest.
+
+ ### Options
+
+ - `-m, --manifest PATH/URL` - path to a custom manifest, it can
+ either be an URL starting with `http`, in that case the
+ manifest will be fetched from that address, or a local path
+
+ ## get-packs
+
+ mix pleroma.emoji get-packs [OPTION...] PACKS
+
+ Fetches, verifies and installs the specified PACKS from the
+ manifest into the `STATIC-DIR/emoji/PACK-NAME
+
+ ### Options
+
+ - `-m, --manifest PATH/URL` - same as ls-packs
+
+ ## gen-pack
+
+ mix pleroma.emoji gen-pack PACK-URL
+
+ Creates a new manifest entry and a file list from the specified
+ remote pack file. Currently, only .zip archives are recognized
+ as remote pack files and packs are therefore assumed to be zip
+ archives. This command is intended to run interactively and will
+ first ask you some basic questions about the pack, then download
+ the remote file and generate an SHA256 checksum for it, then
+ generate an emoji file list for you.
+
+ The manifest entry will either be written to a newly created
+ `index.json` file or appended to the existing one, *replacing*
+ the old pack with the same name if it was in the file previously.
+
+ The file list will be written to the file specified previously,
+ *replacing* that file. You _should_ check that the file list doesn't
+ contain anything you don't need in the pack, that is, anything that is
+ not an emoji (the whole pack is downloaded, but only emoji files
+ are extracted).
+ """
+
+ @default_manifest Pleroma.Config.get!([:emoji, :default_manifest])
+
+ def run(["ls-packs" | args]) do
+ Application.ensure_all_started(:hackney)
+
+ {options, [], []} = parse_global_opts(args)
+
+ manifest =
+ fetch_manifest(if options[:manifest], do: options[:manifest], else: @default_manifest)
+
+ Enum.each(manifest, fn {name, info} ->
+ to_print = [
+ {"Name", name},
+ {"Homepage", info["homepage"]},
+ {"Description", info["description"]},
+ {"License", info["license"]},
+ {"Source", info["src"]}
+ ]
+
+ for {param, value} <- to_print do
+ IO.puts(IO.ANSI.format([:bright, param, :normal, ": ", value]))
+ end
+
+ # A newline
+ IO.puts("")
+ end)
+ end
+
+ def run(["get-packs" | args]) do
+ Application.ensure_all_started(:hackney)
+
+ {options, pack_names, []} = parse_global_opts(args)
+
+ manifest_url = if options[:manifest], do: options[:manifest], else: @default_manifest
+
+ manifest = fetch_manifest(manifest_url)
+
+ for pack_name <- pack_names do
+ if Map.has_key?(manifest, pack_name) do
+ pack = manifest[pack_name]
+ src_url = pack["src"]
+
+ IO.puts(
+ IO.ANSI.format([
+ "Downloading ",
+ :bright,
+ pack_name,
+ :normal,
+ " from ",
+ :underline,
+ src_url
+ ])
+ )
+
+ binary_archive = Tesla.get!(src_url).body
+ archive_sha = :crypto.hash(:sha256, binary_archive) |> Base.encode16()
+
+ sha_status_text = ["SHA256 of ", :bright, pack_name, :normal, " source file is ", :bright]
+
+ if archive_sha == String.upcase(pack["src_sha256"]) do
+ IO.puts(IO.ANSI.format(sha_status_text ++ [:green, "OK"]))
+ else
+ IO.puts(IO.ANSI.format(sha_status_text ++ [:red, "BAD"]))
+
+ raise "Bad SHA256 for #{pack_name}"
+ end
+
+ # The url specified in files should be in the same directory
+ files_url = Path.join(Path.dirname(manifest_url), pack["files"])
+
+ IO.puts(
+ IO.ANSI.format([
+ "Fetching the file list for ",
+ :bright,
+ pack_name,
+ :normal,
+ " from ",
+ :underline,
+ files_url
+ ])
+ )
+
+ files = Tesla.get!(files_url).body |> Poison.decode!()
+
+ IO.puts(IO.ANSI.format(["Unpacking ", :bright, pack_name]))
+
+ pack_path =
+ Path.join([
+ Pleroma.Config.get!([:instance, :static_dir]),
+ "emoji",
+ pack_name
+ ])
+
+ files_to_unzip =
+ Enum.map(
+ files,
+ fn {_, f} -> to_charlist(f) end
+ )
+
+ {:ok, _} =
+ :zip.unzip(binary_archive,
+ cwd: pack_path,
+ file_list: files_to_unzip
+ )
+
+ IO.puts(IO.ANSI.format(["Writing emoji.txt for ", :bright, pack_name]))
+
+ emoji_txt_str =
+ Enum.map(
+ files,
+ fn {shortcode, path} ->
+ emojo_path = Path.join("/emoji/#{pack_name}", path)
+ "#{shortcode}, #{emojo_path}"
+ end
+ )
+ |> Enum.join("\n")
+
+ File.write!(Path.join(pack_path, "emoji.txt"), emoji_txt_str)
+ else
+ IO.puts(IO.ANSI.format([:bright, :red, "No pack named \"#{pack_name}\" found"]))
+ end
+ end
+ end
+
+ def run(["gen-pack", src]) do
+ Application.ensure_all_started(:hackney)
+
+ proposed_name = Path.basename(src) |> Path.rootname()
+ name = String.trim(IO.gets("Pack name [#{proposed_name}]: "))
+ # If there's no name, use the default one
+ name = if String.length(name) > 0, do: name, else: proposed_name
+
+ license = String.trim(IO.gets("License: "))
+ homepage = String.trim(IO.gets("Homepage: "))
+ description = String.trim(IO.gets("Description: "))
+
+ proposed_files_name = "#{name}.json"
+ files_name = String.trim(IO.gets("Save file list to [#{proposed_files_name}]: "))
+ files_name = if String.length(files_name) > 0, do: files_name, else: proposed_files_name
+
+ default_exts = [".png", ".gif"]
+ default_exts_str = Enum.join(default_exts, " ")
+
+ exts =
+ String.trim(
+ IO.gets("Emoji file extensions (separated with spaces) [#{default_exts_str}]: ")
+ )
+
+ exts =
+ if String.length(exts) > 0 do
+ String.split(exts, " ")
+ |> Enum.filter(fn e -> e |> String.trim() |> String.length() > 0 end)
+ else
+ default_exts
+ end
+
+ IO.puts("Downloading the pack and generating SHA256")
+
+ binary_archive = Tesla.get!(src).body
+ archive_sha = :crypto.hash(:sha256, binary_archive) |> Base.encode16()
+
+ IO.puts("SHA256 is #{archive_sha}")
+
+ pack_json = %{
+ name => %{
+ license: license,
+ homepage: homepage,
+ description: description,
+ src: src,
+ src_sha256: archive_sha,
+ files: files_name
+ }
+ }
+
+ tmp_pack_dir = Path.join(System.tmp_dir!(), "emoji-pack-#{name}")
+
+ {:ok, _} =
+ :zip.unzip(
+ binary_archive,
+ cwd: tmp_pack_dir
+ )
+
+ emoji_map = Pleroma.Emoji.make_shortcode_to_file_map(tmp_pack_dir, exts)
+
+ File.write!(files_name, Poison.encode!(emoji_map, pretty: true))
+
+ IO.puts("""
+
+ #{files_name} has been created and contains the list of all found emojis in the pack.
+ Please review the files in the remove those not needed.
+ """)
+
+ if File.exists?("index.json") do
+ existing_data = File.read!("index.json") |> Poison.decode!()
+
+ File.write!(
+ "index.json",
+ Poison.encode!(
+ Map.merge(
+ existing_data,
+ pack_json
+ ),
+ pretty: true
+ )
+ )
+
+ IO.puts("index.json file has been update with the #{name} pack")
+ else
+ File.write!("index.json", Poison.encode!(pack_json, pretty: true))
+
+ IO.puts("index.json has been created with the #{name} pack")
+ end
+ end
+
+ defp fetch_manifest(from) do
+ Poison.decode!(
+ if String.starts_with?(from, "http") do
+ Tesla.get!(from).body
+ else
+ File.read!(from)
+ end
+ )
+ end
+
+ defp parse_global_opts(args) do
+ OptionParser.parse(
+ args,
+ strict: [
+ manifest: :string
+ ],
+ aliases: [
+ m: :manifest
+ ]
+ )
+ end
+end
diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex
index 87c7f2cec..6390cce4c 100644
--- a/lib/pleroma/emoji.ex
+++ b/lib/pleroma/emoji.ex
@@ -6,7 +6,7 @@ defmodule Pleroma.Emoji do
@moduledoc """
The emojis are loaded from:
- * the built-in Finmojis (if enabled in configuration),
+ * emoji packs in INSTANCE-DIR/emoji
* the files: `config/emoji.txt` and `config/custom_emoji.txt`
* glob paths, nested folder is used as tag name for grouping e.g. priv/static/emoji/custom/nested_folder
@@ -14,6 +14,8 @@ defmodule Pleroma.Emoji do
"""
use GenServer
+ require Logger
+
@type pattern :: Regex.t() | module() | String.t()
@type patterns :: pattern() | [pattern()]
@type group_patterns :: keyword(patterns())
@@ -79,95 +81,94 @@ def code_change(_old_vsn, state, _extra) do
end
defp load do
- finmoji_enabled = Keyword.get(Application.get_env(:pleroma, :instance), :finmoji_enabled)
+ emoji_dir_path =
+ Path.join(
+ Pleroma.Config.get!([:instance, :static_dir]),
+ "emoji"
+ )
+
+ case File.ls(emoji_dir_path) do
+ {:error, :enoent} ->
+ # The custom emoji directory doesn't exist,
+ # don't do anything
+ nil
+
+ {:error, e} ->
+ # There was some other error
+ Logger.error("Could not access the custom emoji directory #{emoji_dir_path}: #{e}")
+
+ {:ok, packs} ->
+ # Print the packs we've found
+ Logger.info("Found emoji packs: #{Enum.join(packs, ", ")}")
+
+ emojis =
+ Enum.flat_map(
+ packs,
+ fn pack -> load_pack(Path.join(emoji_dir_path, pack)) end
+ )
+
+ true = :ets.insert(@ets, emojis)
+ end
+
+ # Compat thing for old custom emoji handling & default emoji,
+ # it should run even if there are no emoji packs
shortcode_globs = Application.get_env(:pleroma, :emoji)[:shortcode_globs] || []
emojis =
- (load_finmoji(finmoji_enabled) ++
- load_from_file("config/emoji.txt") ++
+ (load_from_file("config/emoji.txt") ++
load_from_file("config/custom_emoji.txt") ++
load_from_globs(shortcode_globs))
|> Enum.reject(fn value -> value == nil end)
true = :ets.insert(@ets, emojis)
+
:ok
end
- @finmoji [
- "a_trusted_friend",
- "alandislands",
- "association",
- "auroraborealis",
- "baby_in_a_box",
- "bear",
- "black_gold",
- "christmasparty",
- "crosscountryskiing",
- "cupofcoffee",
- "education",
- "fashionista_finns",
- "finnishlove",
- "flag",
- "forest",
- "four_seasons_of_bbq",
- "girlpower",
- "handshake",
- "happiness",
- "headbanger",
- "icebreaker",
- "iceman",
- "joulutorttu",
- "kaamos",
- "kalsarikannit_f",
- "kalsarikannit_m",
- "karjalanpiirakka",
- "kicksled",
- "kokko",
- "lavatanssit",
- "losthopes_f",
- "losthopes_m",
- "mattinykanen",
- "meanwhileinfinland",
- "moominmamma",
- "nordicfamily",
- "out_of_office",
- "peacemaker",
- "perkele",
- "pesapallo",
- "polarbear",
- "pusa_hispida_saimensis",
- "reindeer",
- "sami",
- "sauna_f",
- "sauna_m",
- "sauna_whisk",
- "sisu",
- "stuck",
- "suomimainittu",
- "superfood",
- "swan",
- "the_cap",
- "the_conductor",
- "the_king",
- "the_voice",
- "theoriginalsanta",
- "tomoffinland",
- "torillatavataan",
- "unbreakable",
- "waiting",
- "white_nights",
- "woollysocks"
- ]
+ defp load_pack(pack_dir) do
+ pack_name = Path.basename(pack_dir)
- defp load_finmoji(true) do
- Enum.map(@finmoji, fn finmoji ->
- file_name = "/finmoji/128px/#{finmoji}-128.png"
- group = match_extra(@groups, file_name)
- {finmoji, file_name, to_string(group)}
- end)
+ emoji_txt = Path.join(pack_dir, "emoji.txt")
+
+ if File.exists?(emoji_txt) do
+ load_from_file(emoji_txt)
+ else
+ Logger.info(
+ "No emoji.txt found for pack \"#{pack_name}\", assuming all .png files are emoji"
+ )
+
+ make_shortcode_to_file_map(pack_dir, [".png"])
+ |> Enum.map(fn {shortcode, rel_file} ->
+ filename = Path.join("/emoji/#{pack_name}", rel_file)
+
+ {shortcode, filename, [to_string(match_extra(@groups, filename))]}
+ end)
+ end
end
- defp load_finmoji(_), do: []
+ def make_shortcode_to_file_map(pack_dir, exts) do
+ find_all_emoji(pack_dir, exts)
+ |> Enum.map(&Path.relative_to(&1, pack_dir))
+ |> Enum.map(fn f -> {f |> Path.basename() |> Path.rootname(), f} end)
+ |> Enum.into(%{})
+ end
+
+ def find_all_emoji(dir, exts) do
+ Enum.reduce(
+ File.ls!(dir),
+ [],
+ fn f, acc ->
+ filepath = Path.join(dir, f)
+
+ if File.dir?(filepath) do
+ acc ++ find_all_emoji(filepath, exts)
+ else
+ acc ++ [filepath]
+ end
+ end
+ )
+ |> Enum.filter(fn f -> Path.extname(f) in exts end)
+ end
defp load_from_file(file) do
if File.exists?(file) do
@@ -182,11 +183,11 @@ defp load_from_file_stream(stream) do
|> Stream.map(&String.trim/1)
|> Stream.map(fn line ->
case String.split(line, ~r/,\s*/) do
- [name, file, tags] ->
- {name, file, tags}
-
[name, file] ->
- {name, file, to_string(match_extra(@groups, file))}
+ {name, file, [to_string(match_extra(@groups, file))]}
+
+ [name, file | tags] ->
+ {name, file, tags}
_ ->
nil
@@ -209,7 +210,7 @@ defp load_from_globs(globs) do
tag = match_extra(@groups, Path.join("/", Path.relative_to(path, static_path)))
shortcode = Path.basename(path, Path.extname(path))
external_path = Path.join("/", Path.relative_to(path, static_path))
- {shortcode, external_path, to_string(tag)}
+ {shortcode, external_path, [to_string(tag)]}
end)
end
diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
index 485e79a0d..d271d3786 100644
--- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
+++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
@@ -190,7 +190,7 @@ defp mastodonized_emoji do
"static_url" => url,
"visible_in_picker" => true,
"url" => url,
- "tags" => String.split(tags, ",")
+ "tags" => tags
}
end)
end
diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex
index 9441984c7..8665e058a 100644
--- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex
+++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex
@@ -286,7 +286,7 @@ def emoji(conn, _params) do
emoji =
Emoji.get_all()
|> Enum.map(fn {short_code, path, tags} ->
- {short_code, %{image_url: path, tags: String.split(tags, ",")}}
+ {short_code, %{image_url: path, tags: tags}}
end)
|> Enum.into(%{})
diff --git a/priv/static/finmoji/1000px/a_trusted_friend.png b/priv/static/finmoji/1000px/a_trusted_friend.png
deleted file mode 100644
index 5658d589c..000000000
Binary files a/priv/static/finmoji/1000px/a_trusted_friend.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/alandislands.png b/priv/static/finmoji/1000px/alandislands.png
deleted file mode 100644
index 094dd3284..000000000
Binary files a/priv/static/finmoji/1000px/alandislands.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/association.png b/priv/static/finmoji/1000px/association.png
deleted file mode 100644
index dad3b8864..000000000
Binary files a/priv/static/finmoji/1000px/association.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/auroraborealis.png b/priv/static/finmoji/1000px/auroraborealis.png
deleted file mode 100644
index 5875dc2c4..000000000
Binary files a/priv/static/finmoji/1000px/auroraborealis.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/baby_in_a_box.png b/priv/static/finmoji/1000px/baby_in_a_box.png
deleted file mode 100644
index 9479aaebb..000000000
Binary files a/priv/static/finmoji/1000px/baby_in_a_box.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/bear.png b/priv/static/finmoji/1000px/bear.png
deleted file mode 100644
index 5d9fbb320..000000000
Binary files a/priv/static/finmoji/1000px/bear.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/black_gold.png b/priv/static/finmoji/1000px/black_gold.png
deleted file mode 100644
index 707e949ec..000000000
Binary files a/priv/static/finmoji/1000px/black_gold.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/christmasparty.png b/priv/static/finmoji/1000px/christmasparty.png
deleted file mode 100644
index 785decb8d..000000000
Binary files a/priv/static/finmoji/1000px/christmasparty.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/crosscountryskiing.png b/priv/static/finmoji/1000px/crosscountryskiing.png
deleted file mode 100644
index 2a9bddf41..000000000
Binary files a/priv/static/finmoji/1000px/crosscountryskiing.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/cupofcoffee.png b/priv/static/finmoji/1000px/cupofcoffee.png
deleted file mode 100644
index a12cc867c..000000000
Binary files a/priv/static/finmoji/1000px/cupofcoffee.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/education.png b/priv/static/finmoji/1000px/education.png
deleted file mode 100644
index af9feee59..000000000
Binary files a/priv/static/finmoji/1000px/education.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/fashionista_finns.png b/priv/static/finmoji/1000px/fashionista_finns.png
deleted file mode 100644
index d1140250d..000000000
Binary files a/priv/static/finmoji/1000px/fashionista_finns.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/finnishlove.png b/priv/static/finmoji/1000px/finnishlove.png
deleted file mode 100644
index 00148202f..000000000
Binary files a/priv/static/finmoji/1000px/finnishlove.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/flag.png b/priv/static/finmoji/1000px/flag.png
deleted file mode 100644
index e709449d7..000000000
Binary files a/priv/static/finmoji/1000px/flag.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/forest.png b/priv/static/finmoji/1000px/forest.png
deleted file mode 100644
index b2d64ea37..000000000
Binary files a/priv/static/finmoji/1000px/forest.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/four_seasons_of_bbq.png b/priv/static/finmoji/1000px/four_seasons_of_bbq.png
deleted file mode 100644
index 42f4a7fb7..000000000
Binary files a/priv/static/finmoji/1000px/four_seasons_of_bbq.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/girlpower.png b/priv/static/finmoji/1000px/girlpower.png
deleted file mode 100644
index 7674f2e26..000000000
Binary files a/priv/static/finmoji/1000px/girlpower.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/handshake.png b/priv/static/finmoji/1000px/handshake.png
deleted file mode 100644
index d9857d699..000000000
Binary files a/priv/static/finmoji/1000px/handshake.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/happiness.png b/priv/static/finmoji/1000px/happiness.png
deleted file mode 100644
index fbfc34fe4..000000000
Binary files a/priv/static/finmoji/1000px/happiness.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/headbanger.png b/priv/static/finmoji/1000px/headbanger.png
deleted file mode 100644
index d9c2f6247..000000000
Binary files a/priv/static/finmoji/1000px/headbanger.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/icebreaker.png b/priv/static/finmoji/1000px/icebreaker.png
deleted file mode 100644
index aedce3dca..000000000
Binary files a/priv/static/finmoji/1000px/icebreaker.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/iceman.png b/priv/static/finmoji/1000px/iceman.png
deleted file mode 100644
index c172e60d5..000000000
Binary files a/priv/static/finmoji/1000px/iceman.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/joulutorttu.png b/priv/static/finmoji/1000px/joulutorttu.png
deleted file mode 100644
index d7b5a7e53..000000000
Binary files a/priv/static/finmoji/1000px/joulutorttu.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/kaamos.png b/priv/static/finmoji/1000px/kaamos.png
deleted file mode 100644
index 139b21953..000000000
Binary files a/priv/static/finmoji/1000px/kaamos.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/kalsarikannit_f.png b/priv/static/finmoji/1000px/kalsarikannit_f.png
deleted file mode 100644
index 064c86160..000000000
Binary files a/priv/static/finmoji/1000px/kalsarikannit_f.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/kalsarikannit_m.png b/priv/static/finmoji/1000px/kalsarikannit_m.png
deleted file mode 100644
index e08bd27af..000000000
Binary files a/priv/static/finmoji/1000px/kalsarikannit_m.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/karjalanpiirakka.png b/priv/static/finmoji/1000px/karjalanpiirakka.png
deleted file mode 100644
index dbf647df5..000000000
Binary files a/priv/static/finmoji/1000px/karjalanpiirakka.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/kicksled.png b/priv/static/finmoji/1000px/kicksled.png
deleted file mode 100644
index 305a56f77..000000000
Binary files a/priv/static/finmoji/1000px/kicksled.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/kokko.png b/priv/static/finmoji/1000px/kokko.png
deleted file mode 100644
index 0a5472c9a..000000000
Binary files a/priv/static/finmoji/1000px/kokko.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/lavatanssit.png b/priv/static/finmoji/1000px/lavatanssit.png
deleted file mode 100644
index a1f0a69dd..000000000
Binary files a/priv/static/finmoji/1000px/lavatanssit.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/losthopes_f.png b/priv/static/finmoji/1000px/losthopes_f.png
deleted file mode 100644
index a847df3c5..000000000
Binary files a/priv/static/finmoji/1000px/losthopes_f.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/losthopes_m.png b/priv/static/finmoji/1000px/losthopes_m.png
deleted file mode 100644
index 93c83b995..000000000
Binary files a/priv/static/finmoji/1000px/losthopes_m.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/mattinykanen.png b/priv/static/finmoji/1000px/mattinykanen.png
deleted file mode 100644
index 2d9c9d38f..000000000
Binary files a/priv/static/finmoji/1000px/mattinykanen.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/meanwhileinfinland.png b/priv/static/finmoji/1000px/meanwhileinfinland.png
deleted file mode 100644
index 794db1eed..000000000
Binary files a/priv/static/finmoji/1000px/meanwhileinfinland.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/moominmamma.png b/priv/static/finmoji/1000px/moominmamma.png
deleted file mode 100644
index d34b1b98b..000000000
Binary files a/priv/static/finmoji/1000px/moominmamma.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/nordicfamily.png b/priv/static/finmoji/1000px/nordicfamily.png
deleted file mode 100644
index 21292eaff..000000000
Binary files a/priv/static/finmoji/1000px/nordicfamily.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/out_of_office.png b/priv/static/finmoji/1000px/out_of_office.png
deleted file mode 100644
index b72d6dbd5..000000000
Binary files a/priv/static/finmoji/1000px/out_of_office.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/peacemaker.png b/priv/static/finmoji/1000px/peacemaker.png
deleted file mode 100644
index 48a51fa6f..000000000
Binary files a/priv/static/finmoji/1000px/peacemaker.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/perkele.png b/priv/static/finmoji/1000px/perkele.png
deleted file mode 100644
index 16a68d053..000000000
Binary files a/priv/static/finmoji/1000px/perkele.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/pesapallo.png b/priv/static/finmoji/1000px/pesapallo.png
deleted file mode 100644
index 2f35c8e02..000000000
Binary files a/priv/static/finmoji/1000px/pesapallo.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/polarbear.png b/priv/static/finmoji/1000px/polarbear.png
deleted file mode 100644
index ce6c65e8b..000000000
Binary files a/priv/static/finmoji/1000px/polarbear.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/pusa_hispida_saimensis.png b/priv/static/finmoji/1000px/pusa_hispida_saimensis.png
deleted file mode 100644
index 35ec8caed..000000000
Binary files a/priv/static/finmoji/1000px/pusa_hispida_saimensis.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/reindeer.png b/priv/static/finmoji/1000px/reindeer.png
deleted file mode 100644
index e60f0f0a4..000000000
Binary files a/priv/static/finmoji/1000px/reindeer.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/sami.png b/priv/static/finmoji/1000px/sami.png
deleted file mode 100644
index e4703dfd2..000000000
Binary files a/priv/static/finmoji/1000px/sami.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/sauna_f.png b/priv/static/finmoji/1000px/sauna_f.png
deleted file mode 100644
index 9a4ba8629..000000000
Binary files a/priv/static/finmoji/1000px/sauna_f.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/sauna_m.png b/priv/static/finmoji/1000px/sauna_m.png
deleted file mode 100644
index 4bdd33f7b..000000000
Binary files a/priv/static/finmoji/1000px/sauna_m.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/sauna_whisk.png b/priv/static/finmoji/1000px/sauna_whisk.png
deleted file mode 100644
index c16928065..000000000
Binary files a/priv/static/finmoji/1000px/sauna_whisk.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/sisu.png b/priv/static/finmoji/1000px/sisu.png
deleted file mode 100644
index 238453bb5..000000000
Binary files a/priv/static/finmoji/1000px/sisu.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/stuck.png b/priv/static/finmoji/1000px/stuck.png
deleted file mode 100644
index 4180e3ecd..000000000
Binary files a/priv/static/finmoji/1000px/stuck.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/suomimainittu.png b/priv/static/finmoji/1000px/suomimainittu.png
deleted file mode 100644
index af46347f5..000000000
Binary files a/priv/static/finmoji/1000px/suomimainittu.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/superfood.png b/priv/static/finmoji/1000px/superfood.png
deleted file mode 100644
index 8fa033c18..000000000
Binary files a/priv/static/finmoji/1000px/superfood.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/swan.png b/priv/static/finmoji/1000px/swan.png
deleted file mode 100644
index 5363f861d..000000000
Binary files a/priv/static/finmoji/1000px/swan.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/the_cap.png b/priv/static/finmoji/1000px/the_cap.png
deleted file mode 100644
index 7f547dc0e..000000000
Binary files a/priv/static/finmoji/1000px/the_cap.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/the_conductor.png b/priv/static/finmoji/1000px/the_conductor.png
deleted file mode 100644
index ed5ca7f1f..000000000
Binary files a/priv/static/finmoji/1000px/the_conductor.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/the_king.png b/priv/static/finmoji/1000px/the_king.png
deleted file mode 100644
index 8c3a5c66d..000000000
Binary files a/priv/static/finmoji/1000px/the_king.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/the_voice.png b/priv/static/finmoji/1000px/the_voice.png
deleted file mode 100644
index 9bfc87b3a..000000000
Binary files a/priv/static/finmoji/1000px/the_voice.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/theoriginalsanta.png b/priv/static/finmoji/1000px/theoriginalsanta.png
deleted file mode 100644
index b8dc1ef47..000000000
Binary files a/priv/static/finmoji/1000px/theoriginalsanta.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/tomoffinland.png b/priv/static/finmoji/1000px/tomoffinland.png
deleted file mode 100644
index 97da05a64..000000000
Binary files a/priv/static/finmoji/1000px/tomoffinland.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/torillatavataan.png b/priv/static/finmoji/1000px/torillatavataan.png
deleted file mode 100644
index ff7a81eda..000000000
Binary files a/priv/static/finmoji/1000px/torillatavataan.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/unbreakable.png b/priv/static/finmoji/1000px/unbreakable.png
deleted file mode 100644
index 1778fc115..000000000
Binary files a/priv/static/finmoji/1000px/unbreakable.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/waiting.png b/priv/static/finmoji/1000px/waiting.png
deleted file mode 100644
index 2aa9afa70..000000000
Binary files a/priv/static/finmoji/1000px/waiting.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/white_nights.png b/priv/static/finmoji/1000px/white_nights.png
deleted file mode 100644
index 8e9cd3fc8..000000000
Binary files a/priv/static/finmoji/1000px/white_nights.png and /dev/null differ
diff --git a/priv/static/finmoji/1000px/woollysocks.png b/priv/static/finmoji/1000px/woollysocks.png
deleted file mode 100644
index 5ee4e6de1..000000000
Binary files a/priv/static/finmoji/1000px/woollysocks.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/a_trusted_friend-128.png b/priv/static/finmoji/128px/a_trusted_friend-128.png
deleted file mode 100644
index 16d596bda..000000000
Binary files a/priv/static/finmoji/128px/a_trusted_friend-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/alandislands-128.png b/priv/static/finmoji/128px/alandislands-128.png
deleted file mode 100644
index 13cdf6e76..000000000
Binary files a/priv/static/finmoji/128px/alandislands-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/association-128.png b/priv/static/finmoji/128px/association-128.png
deleted file mode 100644
index 5b388d781..000000000
Binary files a/priv/static/finmoji/128px/association-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/auroraborealis-128.png b/priv/static/finmoji/128px/auroraborealis-128.png
deleted file mode 100644
index 7e2af77b9..000000000
Binary files a/priv/static/finmoji/128px/auroraborealis-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/baby_in_a_box-128.png b/priv/static/finmoji/128px/baby_in_a_box-128.png
deleted file mode 100644
index 9c495e24a..000000000
Binary files a/priv/static/finmoji/128px/baby_in_a_box-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/bear-128.png b/priv/static/finmoji/128px/bear-128.png
deleted file mode 100644
index 8bb101bf4..000000000
Binary files a/priv/static/finmoji/128px/bear-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/black_gold-128.png b/priv/static/finmoji/128px/black_gold-128.png
deleted file mode 100644
index 1833edab4..000000000
Binary files a/priv/static/finmoji/128px/black_gold-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/christmasparty-128.png b/priv/static/finmoji/128px/christmasparty-128.png
deleted file mode 100644
index 98216830c..000000000
Binary files a/priv/static/finmoji/128px/christmasparty-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/crosscountryskiing-128.png b/priv/static/finmoji/128px/crosscountryskiing-128.png
deleted file mode 100644
index 67553f398..000000000
Binary files a/priv/static/finmoji/128px/crosscountryskiing-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/cupofcoffee-128.png b/priv/static/finmoji/128px/cupofcoffee-128.png
deleted file mode 100644
index 20064f218..000000000
Binary files a/priv/static/finmoji/128px/cupofcoffee-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/education-128.png b/priv/static/finmoji/128px/education-128.png
deleted file mode 100644
index c98083bdd..000000000
Binary files a/priv/static/finmoji/128px/education-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/fashionista_finns-128.png b/priv/static/finmoji/128px/fashionista_finns-128.png
deleted file mode 100644
index 4248825e0..000000000
Binary files a/priv/static/finmoji/128px/fashionista_finns-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/finnishlove-128.png b/priv/static/finmoji/128px/finnishlove-128.png
deleted file mode 100644
index 5d4f9476c..000000000
Binary files a/priv/static/finmoji/128px/finnishlove-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/flag-128.png b/priv/static/finmoji/128px/flag-128.png
deleted file mode 100644
index 0087cc589..000000000
Binary files a/priv/static/finmoji/128px/flag-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/forest-128.png b/priv/static/finmoji/128px/forest-128.png
deleted file mode 100644
index 142e60b94..000000000
Binary files a/priv/static/finmoji/128px/forest-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/four_seasons_of_bbq-128.png b/priv/static/finmoji/128px/four_seasons_of_bbq-128.png
deleted file mode 100644
index bb7fe1f51..000000000
Binary files a/priv/static/finmoji/128px/four_seasons_of_bbq-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/girlpower-128.png b/priv/static/finmoji/128px/girlpower-128.png
deleted file mode 100644
index bc76a51c5..000000000
Binary files a/priv/static/finmoji/128px/girlpower-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/handshake-128.png b/priv/static/finmoji/128px/handshake-128.png
deleted file mode 100644
index 4ebf196ab..000000000
Binary files a/priv/static/finmoji/128px/handshake-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/happiness-128.png b/priv/static/finmoji/128px/happiness-128.png
deleted file mode 100644
index e28f99a26..000000000
Binary files a/priv/static/finmoji/128px/happiness-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/headbanger-128.png b/priv/static/finmoji/128px/headbanger-128.png
deleted file mode 100644
index 0de620efe..000000000
Binary files a/priv/static/finmoji/128px/headbanger-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/icebreaker-128.png b/priv/static/finmoji/128px/icebreaker-128.png
deleted file mode 100644
index 7fb36a4a3..000000000
Binary files a/priv/static/finmoji/128px/icebreaker-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/iceman-128.png b/priv/static/finmoji/128px/iceman-128.png
deleted file mode 100644
index eb814e6aa..000000000
Binary files a/priv/static/finmoji/128px/iceman-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/joulutorttu-128.png b/priv/static/finmoji/128px/joulutorttu-128.png
deleted file mode 100644
index 50448e333..000000000
Binary files a/priv/static/finmoji/128px/joulutorttu-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/kaamos-128.png b/priv/static/finmoji/128px/kaamos-128.png
deleted file mode 100644
index 8b2df03ef..000000000
Binary files a/priv/static/finmoji/128px/kaamos-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/kalsarikannit_f-128.png b/priv/static/finmoji/128px/kalsarikannit_f-128.png
deleted file mode 100644
index bcd94141a..000000000
Binary files a/priv/static/finmoji/128px/kalsarikannit_f-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/kalsarikannit_m-128.png b/priv/static/finmoji/128px/kalsarikannit_m-128.png
deleted file mode 100644
index c6938e677..000000000
Binary files a/priv/static/finmoji/128px/kalsarikannit_m-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/karjalanpiirakka-128.png b/priv/static/finmoji/128px/karjalanpiirakka-128.png
deleted file mode 100644
index a82a902db..000000000
Binary files a/priv/static/finmoji/128px/karjalanpiirakka-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/kicksled-128.png b/priv/static/finmoji/128px/kicksled-128.png
deleted file mode 100644
index ff42462db..000000000
Binary files a/priv/static/finmoji/128px/kicksled-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/kokko-128.png b/priv/static/finmoji/128px/kokko-128.png
deleted file mode 100644
index e0b6e07fa..000000000
Binary files a/priv/static/finmoji/128px/kokko-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/lavatanssit-128.png b/priv/static/finmoji/128px/lavatanssit-128.png
deleted file mode 100644
index f89dc358c..000000000
Binary files a/priv/static/finmoji/128px/lavatanssit-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/losthopes_f-128.png b/priv/static/finmoji/128px/losthopes_f-128.png
deleted file mode 100644
index 60f0949c0..000000000
Binary files a/priv/static/finmoji/128px/losthopes_f-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/losthopes_m-128.png b/priv/static/finmoji/128px/losthopes_m-128.png
deleted file mode 100644
index 9ae6f9e2f..000000000
Binary files a/priv/static/finmoji/128px/losthopes_m-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/mattinykanen-128.png b/priv/static/finmoji/128px/mattinykanen-128.png
deleted file mode 100644
index 0e81271ca..000000000
Binary files a/priv/static/finmoji/128px/mattinykanen-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/meanwhileinfinland-128.png b/priv/static/finmoji/128px/meanwhileinfinland-128.png
deleted file mode 100644
index 5a9710a3b..000000000
Binary files a/priv/static/finmoji/128px/meanwhileinfinland-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/moominmamma-128.png b/priv/static/finmoji/128px/moominmamma-128.png
deleted file mode 100644
index ae37bb94a..000000000
Binary files a/priv/static/finmoji/128px/moominmamma-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/nordicfamily-128.png b/priv/static/finmoji/128px/nordicfamily-128.png
deleted file mode 100644
index cff41b228..000000000
Binary files a/priv/static/finmoji/128px/nordicfamily-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/out_of_office-128.png b/priv/static/finmoji/128px/out_of_office-128.png
deleted file mode 100644
index 45cd1c2f5..000000000
Binary files a/priv/static/finmoji/128px/out_of_office-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/peacemaker-128.png b/priv/static/finmoji/128px/peacemaker-128.png
deleted file mode 100644
index c4e9bd447..000000000
Binary files a/priv/static/finmoji/128px/peacemaker-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/perkele-128.png b/priv/static/finmoji/128px/perkele-128.png
deleted file mode 100644
index e89e5bf32..000000000
Binary files a/priv/static/finmoji/128px/perkele-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/pesapallo-128.png b/priv/static/finmoji/128px/pesapallo-128.png
deleted file mode 100644
index 5e06bec50..000000000
Binary files a/priv/static/finmoji/128px/pesapallo-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/polarbear-128.png b/priv/static/finmoji/128px/polarbear-128.png
deleted file mode 100644
index fd3c3ec30..000000000
Binary files a/priv/static/finmoji/128px/polarbear-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/pusa_hispida_saimensis-128.png b/priv/static/finmoji/128px/pusa_hispida_saimensis-128.png
deleted file mode 100644
index 60620be5d..000000000
Binary files a/priv/static/finmoji/128px/pusa_hispida_saimensis-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/reindeer-128.png b/priv/static/finmoji/128px/reindeer-128.png
deleted file mode 100644
index 8cdd05f27..000000000
Binary files a/priv/static/finmoji/128px/reindeer-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/sami-128.png b/priv/static/finmoji/128px/sami-128.png
deleted file mode 100644
index e9e9f41a7..000000000
Binary files a/priv/static/finmoji/128px/sami-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/sauna_f-128.png b/priv/static/finmoji/128px/sauna_f-128.png
deleted file mode 100644
index 474f126ff..000000000
Binary files a/priv/static/finmoji/128px/sauna_f-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/sauna_m-128.png b/priv/static/finmoji/128px/sauna_m-128.png
deleted file mode 100644
index f7f563a9b..000000000
Binary files a/priv/static/finmoji/128px/sauna_m-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/sauna_whisk-128.png b/priv/static/finmoji/128px/sauna_whisk-128.png
deleted file mode 100644
index 80ebb55e4..000000000
Binary files a/priv/static/finmoji/128px/sauna_whisk-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/sisu-128.png b/priv/static/finmoji/128px/sisu-128.png
deleted file mode 100644
index 7b9330654..000000000
Binary files a/priv/static/finmoji/128px/sisu-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/stuck-128.png b/priv/static/finmoji/128px/stuck-128.png
deleted file mode 100644
index c14bc555d..000000000
Binary files a/priv/static/finmoji/128px/stuck-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/suomimainittu-128.png b/priv/static/finmoji/128px/suomimainittu-128.png
deleted file mode 100644
index 8d35b9be1..000000000
Binary files a/priv/static/finmoji/128px/suomimainittu-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/superfood-128.png b/priv/static/finmoji/128px/superfood-128.png
deleted file mode 100644
index 2e9d924cc..000000000
Binary files a/priv/static/finmoji/128px/superfood-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/swan-128.png b/priv/static/finmoji/128px/swan-128.png
deleted file mode 100644
index d1711c70b..000000000
Binary files a/priv/static/finmoji/128px/swan-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/the_cap-128.png b/priv/static/finmoji/128px/the_cap-128.png
deleted file mode 100644
index 10d83c22e..000000000
Binary files a/priv/static/finmoji/128px/the_cap-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/the_conductor-128.png b/priv/static/finmoji/128px/the_conductor-128.png
deleted file mode 100644
index 0da7c42e8..000000000
Binary files a/priv/static/finmoji/128px/the_conductor-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/the_king-128.png b/priv/static/finmoji/128px/the_king-128.png
deleted file mode 100644
index 07dd27ad7..000000000
Binary files a/priv/static/finmoji/128px/the_king-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/the_voice-128.png b/priv/static/finmoji/128px/the_voice-128.png
deleted file mode 100644
index bb436f95b..000000000
Binary files a/priv/static/finmoji/128px/the_voice-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/theoriginalsanta-128.png b/priv/static/finmoji/128px/theoriginalsanta-128.png
deleted file mode 100644
index 082d58c28..000000000
Binary files a/priv/static/finmoji/128px/theoriginalsanta-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/tomoffinland-128.png b/priv/static/finmoji/128px/tomoffinland-128.png
deleted file mode 100644
index 29c68bcba..000000000
Binary files a/priv/static/finmoji/128px/tomoffinland-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/torillatavataan-128.png b/priv/static/finmoji/128px/torillatavataan-128.png
deleted file mode 100644
index da7b502b4..000000000
Binary files a/priv/static/finmoji/128px/torillatavataan-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/unbreakable-128.png b/priv/static/finmoji/128px/unbreakable-128.png
deleted file mode 100644
index eb825e14f..000000000
Binary files a/priv/static/finmoji/128px/unbreakable-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/waiting-128.png b/priv/static/finmoji/128px/waiting-128.png
deleted file mode 100644
index 10b9167f2..000000000
Binary files a/priv/static/finmoji/128px/waiting-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/white_nights-128.png b/priv/static/finmoji/128px/white_nights-128.png
deleted file mode 100644
index 8eacd11f0..000000000
Binary files a/priv/static/finmoji/128px/white_nights-128.png and /dev/null differ
diff --git a/priv/static/finmoji/128px/woollysocks-128.png b/priv/static/finmoji/128px/woollysocks-128.png
deleted file mode 100644
index 856af5b2e..000000000
Binary files a/priv/static/finmoji/128px/woollysocks-128.png and /dev/null differ
diff --git a/priv/static/finmoji/LICENSE b/priv/static/finmoji/LICENSE
deleted file mode 100644
index e3a607aa3..000000000
--- a/priv/static/finmoji/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-these are under CC-BY-ND, see https://finland.fi/emoji/
diff --git a/test/emoji_test.exs b/test/emoji_test.exs
index cb1d62d00..2eaa26be6 100644
--- a/test/emoji_test.exs
+++ b/test/emoji_test.exs
@@ -15,7 +15,7 @@ test "first emoji", %{emoji_list: emoji_list} do
assert tuple_size(emoji) == 3
assert is_binary(code)
assert is_binary(path)
- assert is_binary(tags)
+ assert is_list(tags)
end
test "random emoji", %{emoji_list: emoji_list} do
@@ -25,7 +25,7 @@ test "random emoji", %{emoji_list: emoji_list} do
assert tuple_size(emoji) == 3
assert is_binary(code)
assert is_binary(path)
- assert is_binary(tags)
+ assert is_list(tags)
end
end
diff --git a/test/formatter_test.exs b/test/formatter_test.exs
index e74985c4e..97eb2f583 100644
--- a/test/formatter_test.exs
+++ b/test/formatter_test.exs
@@ -245,10 +245,10 @@ test "it can parse mentions and return the relevant users" do
end
test "it adds cool emoji" do
- text = "I love :moominmamma:"
+ text = "I love :firefox:"
expected_result =
- "I love "
+ "I love "
assert Formatter.emojify(text) == expected_result
end
@@ -269,10 +269,10 @@ test "it does not add XSS emoji" do
end
test "it returns the emoji used in the text" do
- text = "I love :moominmamma:"
+ text = "I love :firefox:"
assert Formatter.get_emoji(text) == [
- {"moominmamma", "/finmoji/128px/moominmamma-128.png", "Finmoji"}
+ {"firefox", "/emoji/Firefox.gif", ["Gif", "Fun"]}
]
end
diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs
index 6bb81a054..7d301b0d4 100644
--- a/test/web/activity_pub/transmogrifier_test.exs
+++ b/test/web/activity_pub/transmogrifier_test.exs
@@ -946,7 +946,7 @@ test "it strips internal hashtag data" do
test "it strips internal fields" do
user = insert(:user)
- {:ok, activity} = CommonAPI.post(user, %{"status" => "#2hu :moominmamma:"})
+ {:ok, activity} = CommonAPI.post(user, %{"status" => "#2hu :firefox:"})
{:ok, modified} = Transmogrifier.prepare_outgoing(activity.data)
diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs
index 3d2bb8929..a5b07c446 100644
--- a/test/web/common_api/common_api_test.exs
+++ b/test/web/common_api/common_api_test.exs
@@ -40,19 +40,19 @@ test "it de-duplicates tags" do
test "it adds emoji in the object" do
user = insert(:user)
- {:ok, activity} = CommonAPI.post(user, %{"status" => ":moominmamma:"})
+ {:ok, activity} = CommonAPI.post(user, %{"status" => ":firefox:"})
- assert Object.normalize(activity).data["emoji"]["moominmamma"]
+ assert Object.normalize(activity).data["emoji"]["firefox"]
end
test "it adds emoji when updating profiles" do
- user = insert(:user, %{name: ":karjalanpiirakka:"})
+ user = insert(:user, %{name: ":firefox:"})
CommonAPI.update(user)
user = User.get_cached_by_ap_id(user.ap_id)
- [karjalanpiirakka] = user.info.source_data["tag"]
+ [firefox] = user.info.source_data["tag"]
- assert karjalanpiirakka["name"] == ":karjalanpiirakka:"
+ assert firefox["name"] == ":firefox:"
end
describe "posting" do
diff --git a/test/web/common_api/common_api_utils_test.exs b/test/web/common_api/common_api_utils_test.exs
index f0c59d5c3..837a66063 100644
--- a/test/web/common_api/common_api_utils_test.exs
+++ b/test/web/common_api/common_api_utils_test.exs
@@ -37,21 +37,21 @@ test "correct password given" do
end
test "parses emoji from name and bio" do
- {:ok, user} = UserBuilder.insert(%{name: ":karjalanpiirakka:", bio: ":perkele:"})
+ {:ok, user} = UserBuilder.insert(%{name: ":blank:", bio: ":firefox:"})
expected = [
%{
"type" => "Emoji",
- "icon" => %{"type" => "Image", "url" => "#{Endpoint.url()}/finmoji/128px/perkele-128.png"},
- "name" => ":perkele:"
+ "icon" => %{"type" => "Image", "url" => "#{Endpoint.url()}/emoji/Firefox.gif"},
+ "name" => ":firefox:"
},
%{
"type" => "Emoji",
"icon" => %{
"type" => "Image",
- "url" => "#{Endpoint.url()}/finmoji/128px/karjalanpiirakka-128.png"
+ "url" => "#{Endpoint.url()}/emoji/blank.png"
},
- "name" => ":karjalanpiirakka:"
+ "name" => ":blank:"
}
]
diff --git a/test/web/push/impl_test.exs b/test/web/push/impl_test.exs
index 6bac2c9f6..49b2a9203 100644
--- a/test/web/push/impl_test.exs
+++ b/test/web/push/impl_test.exs
@@ -107,7 +107,7 @@ test "renders body for create activity" do
"type" => "Create",
"object" => %{
"content" =>
- "Lorem ipsum dolor sit amet, consectetur :bear: adipiscing elit. Fusce sagittis finibus turpis."
+ "Lorem ipsum dolor sit amet, consectetur :firefox: adipiscing elit. Fusce sagittis finibus turpis."
}
}
}
@@ -129,7 +129,7 @@ test "renders body for announce activity" do
insert(:note, %{
data: %{
"content" =>
- "Lorem ipsum dolor sit amet, consectetur :bear: adipiscing elit. Fusce sagittis finibus turpis."
+ "Lorem ipsum dolor sit amet, consectetur :firefox: adipiscing elit. Fusce sagittis finibus turpis."
}
})
diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs
index 5bea1037a..6b4cefacf 100644
--- a/test/web/twitter_api/twitter_api_test.exs
+++ b/test/web/twitter_api/twitter_api_test.exs
@@ -41,7 +41,7 @@ test "create a status" do
input = %{
"status" =>
- "Hello again, @shp.\nThis is on another :moominmamma: line. #2hu #epic #phantasmagoric",
+ "Hello again, @shp.\nThis is on another :firefox: line. #2hu #epic #phantasmagoric",
"media_ids" => [object.id]
}
@@ -49,7 +49,7 @@ test "create a status" do
object = Object.normalize(activity.data["object"])
expected_text =
- "Hello again, @shp.<script></script>
This is on another :moominmamma: line. #2hu #epic #phantasmagoric
image.jpg"
+ "Hello again, @shp.<script></script>
This is on another :firefox: line. #2hu #epic #phantasmagoric
image.jpg"
assert get_in(object.data, ["content"]) == expected_text
assert get_in(object.data, ["type"]) == "Note"
@@ -65,8 +65,7 @@ test "create a status" do
assert Enum.member?(get_in(activity.data, ["to"]), "shp")
assert activity.local == true
- assert %{"moominmamma" => "http://localhost:4001/finmoji/128px/moominmamma-128.png"} =
- object.data["emoji"]
+ assert %{"firefox" => "http://localhost:4001/emoji/Firefox.gif"} = object.data["emoji"]
# hashtags
assert object.data["tag"] == ["2hu", "epic", "phantasmagoric"]
diff --git a/test/web/twitter_api/views/activity_view_test.exs b/test/web/twitter_api/views/activity_view_test.exs
index b5440c612..d84ab7420 100644
--- a/test/web/twitter_api/views/activity_view_test.exs
+++ b/test/web/twitter_api/views/activity_view_test.exs
@@ -91,16 +91,16 @@ test "a create activity with a html status" do
test "a create activity with a summary containing emoji" do
{:ok, activity} =
CommonAPI.post(insert(:user), %{
- "spoiler_text" => ":woollysocks: meow",
+ "spoiler_text" => ":firefox: meow",
"status" => "."
})
result = ActivityView.render("activity.json", activity: activity)
- expected = ":woollysocks: meow"
+ expected = ":firefox: meow"
expected_html =
- " meow"
+ " meow"
assert result["summary"] == expected
assert result["summary_html"] == expected_html