Move default mascot configuration to `config/`
authorSadposter <hannah+pleroma@coffee-and-dreams.uk>
Mon, 20 May 2019 15:12:55 +0000 (16:12 +0100)
committerSadposter <hannah+pleroma@coffee-and-dreams.uk>
Mon, 20 May 2019 15:12:55 +0000 (16:12 +0100)
config/config.exs
docs/config.md
lib/pleroma/user.ex
lib/pleroma/user/info.ex
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex

index bab47a8a24a626a2a5966c6d2dd693e8c0cc90fb..72908266d635f2267f8a613f103d59fb971510b9 100644 (file)
@@ -276,6 +276,19 @@ config :pleroma, :frontend_configurations,
     showInstanceSpecificPanel: true
   }
 
+config :pleroma, :assets,
+  mascots: [
+    pleroma_fox_tan: %{
+      url: "/images/pleroma-fox-tan-smol.png",
+      mime_type: "image/png"
+    },
+    pleroma_fox_tan_shy: %{
+      url: "/images/pleroma-fox-tan-shy.png",
+      mime_type: "image/png"
+    }
+  ],
+  default_mascot: :pleroma_fox_tan
+
 config :pleroma, :activitypub,
   accept_blocks: true,
   unfollow_blocked: true,
index 450d73fda7268dccd6f080cc2dd29cd4efa45ea3..197326bbd74d59aef62a810858036142ef1f8f1a 100644 (file)
@@ -203,6 +203,16 @@ This section is used to configure Pleroma-FE, unless ``:managed_config`` in ``:i
 * `hide_post_stats`: Hide notices statistics(repeats, favorites, …)
 * `hide_user_stats`: Hide profile statistics(posts, posts per day, followers, followings, …)
 
+## :assets
+
+This section configures assets to be used with various frontends. Currently the only option
+relates to mascots on the mastodon frontend
+
+* `mascots`: KeywordList of mascots, each element __MUST__ contain both a `url` and a
+  `mime_type` key.
+* `default_mascot`: An element from `mascots` - This will be used as the default mascot
+  on MastoFE (default: `:pleroma_fox_tan`)
+
 ## :mrf_simple
 * `media_removal`: List of instances to remove medias from
 * `media_nsfw`: List of instances to put medias as NSFW(sensitive) from
index 28da310ee1d443acad326e568e5af3f3b013dfcf..05fe58f7ca07cd30e1e0b1441b8f6425b9201a93 100644 (file)
@@ -1402,4 +1402,24 @@ defmodule Pleroma.User do
     |> put_embed(:info, info_changeset)
     |> update_and_set_cache()
   end
+
+  def get_mascot(%{info: %{mascot: %{} = mascot}}) when not is_nil(mascot) do
+    mascot
+  end
+
+  def get_mascot(%{info: %{mascot: mascot}}) when is_nil(mascot) do
+    # use instance-default
+    config = Pleroma.Config.get([:assets, :mascots])
+    default_mascot = Pleroma.Config.get([:assets, :default_mascot])
+    mascot = Keyword.get(config, default_mascot)
+
+    %{
+      "id" => "default-mascot",
+      "url" => mascot[:url],
+      "preview_url" => mascot[:url],
+      "pleroma" => %{
+        "mime_type" => mascot[:mime_type]
+      }
+    }
+  end
 end
index e76d04d7f07f0bbda5f414aef16d93d118f2e834..6397e2737b8fddc658149b420e74db539a41f27e 100644 (file)
@@ -43,19 +43,7 @@ defmodule Pleroma.User.Info do
     field(:hide_favorites, :boolean, default: true)
     field(:pinned_activities, {:array, :string}, default: [])
     field(:flavour, :string, default: nil)
-
-    field(:mascot, :map,
-      default: %{
-        "id" => "pleromatan",
-        "url" => "/images/pleroma-fox-tan-smol.png",
-        "type" => "image",
-        "preview_url" => "/images/pleroma-fox-tan-smol.png",
-        "pleroma" => %{
-          "mime_type" => "image/png"
-        }
-      }
-    )
-
+    field(:mascot, :map, default: nil)
     field(:emoji, {:array, :map}, default: [])
 
     field(:notification_settings, :map,
index d7f095a1fdbc34722ced6b8ab5cbfc547b34ca22..1ec0f30a1ecb74e1b04ff8714becaccc7526b3f2 100644 (file)
@@ -736,7 +736,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
   end
 
   def get_mascot(%{assigns: %{user: user}} = conn, _params) do
-    %{info: %{mascot: mascot}} = user
+    mascot = User.get_mascot(user)
 
     conn
     |> json(mascot)
@@ -1364,7 +1364,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
             display_sensitive_media: false,
             reduce_motion: false,
             max_toot_chars: limit,
-            mascot: Map.get(user.info.mascot, "url", "/images/pleroma-fox-tan-smol.png")
+            mascot: User.get_mascot(user)["url"]
           },
           rights: %{
             delete_others_notice: present?(user.info.is_moderator),