Merge branch 'feature/update-welcome-setting-in-description' into 'develop'
authorfeld <feld@feld.me>
Wed, 12 Aug 2020 16:18:40 +0000 (16:18 +0000)
committerfeld <feld@feld.me>
Wed, 12 Aug 2020 16:18:40 +0000 (16:18 +0000)
Update :welcome settings in description.exs

Closes #2024

See merge request pleroma/pleroma!2843

config/description.exs
test/web/admin_api/controllers/config_controller_test.exs

index d823812fbd33d4fba0f2e56662d3880606455e87..7734ff7a1b858efb0ec6747091914e07fe4a91b8 100644 (file)
@@ -194,7 +194,7 @@ config :pleroma, :config_description, [
         type: [:string, {:list, :string}, {:list, :tuple}],
         description:
           "List of actions for the mogrify command. It's possible to add self-written settings as string. " <>
-            "For example `[\"auto-orient\", \"strip\", {\"resize\", \"3840x1080>\"}]` string will be parsed into list of the settings.",
+            "For example `auto-orient, strip, {\"resize\", \"3840x1080>\"}` value will be parsed into valid list of the settings.",
         suggestions: [
           "strip",
           "auto-orient",
@@ -951,7 +951,7 @@ config :pleroma, :config_description, [
       },
       %{
         key: :instance_thumbnail,
-        type: :string,
+        type: {:string, :image},
         description:
           "The instance thumbnail can be any image that represents your instance and is used by some apps or services when they display information about your instance.",
         suggestions: ["/instance/thumbnail.jpeg"]
@@ -964,25 +964,25 @@ config :pleroma, :config_description, [
     ]
   },
   %{
-    group: :welcome,
+    group: :pleroma,
+    key: :welcome,
     type: :group,
     description: "Welcome messages settings",
     children: [
       %{
-        group: :direct_message,
-        type: :group,
+        key: :direct_message,
+        type: :keyword,
         descpiption: "Direct message settings",
         children: [
           %{
             key: :enabled,
             type: :boolean,
-            description: "Enables sends direct message for new user after registration"
+            description: "Enables sending a direct message to newly registered users"
           },
           %{
             key: :message,
             type: :string,
-            description:
-              "A message that will be sent to a newly registered users as a direct message",
+            description: "A message that will be sent to newly registered users",
             suggestions: [
               "Hi, @username! Welcome on board!"
             ]
@@ -990,7 +990,7 @@ config :pleroma, :config_description, [
           %{
             key: :sender_nickname,
             type: :string,
-            description: "The nickname of the local user that sends the welcome message",
+            description: "The nickname of the local user that sends a welcome message",
             suggestions: [
               "lain"
             ]
@@ -998,20 +998,20 @@ config :pleroma, :config_description, [
         ]
       },
       %{
-        group: :chat_message,
-        type: :group,
+        key: :chat_message,
+        type: :keyword,
         descpiption: "Chat message settings",
         children: [
           %{
             key: :enabled,
             type: :boolean,
-            description: "Enables sends chat message for new user after registration"
+            description: "Enables sending a chat message to newly registered users"
           },
           %{
             key: :message,
             type: :string,
             description:
-              "A message that will be sent to newly registered users as a chat message",
+              "A message that will be sent to newly registered users as a chat message",
             suggestions: [
               "Hello, welcome on board!"
             ]
@@ -1019,7 +1019,7 @@ config :pleroma, :config_description, [
           %{
             key: :sender_nickname,
             type: :string,
-            description: "The nickname of the local user that sends the welcome message",
+            description: "The nickname of the local user that sends a welcome chat message",
             suggestions: [
               "lain"
             ]
@@ -1027,20 +1027,20 @@ config :pleroma, :config_description, [
         ]
       },
       %{
-        group: :email,
-        type: :group,
+        key: :email,
+        type: :keyword,
         descpiption: "Email message settings",
         children: [
           %{
             key: :enabled,
             type: :boolean,
-            description: "Enables sends direct message for new user after registration"
+            description: "Enables sending an email to newly registered users"
           },
           %{
             key: :sender,
             type: [:string, :tuple],
             description:
-              "The email address or tuple with `{nickname, email}` that will use as sender to the welcome email.",
+              "Email address and/or nickname that will be used to send the welcome email.",
             suggestions: [
               {"Pleroma App", "welcome@pleroma.app"}
             ]
@@ -1049,21 +1049,21 @@ config :pleroma, :config_description, [
             key: :subject,
             type: :string,
             description:
-              "The subject of welcome email. Can be use EEX template with `user` and `instance_name` variables.",
+              "Subject of the welcome email. EEX template with user and instance_name variables can be used.",
             suggestions: ["Welcome to <%= instance_name%>"]
           },
           %{
             key: :html,
             type: :string,
             description:
-              "The html content of welcome email. Can be use EEX template with `user` and `instance_name` variables.",
+              "HTML content of the welcome email. EEX template with user and instance_name variables can be used.",
             suggestions: ["<h1>Hello <%= user.name%>. Welcome to <%= instance_name%></h1>"]
           },
           %{
             key: :text,
             type: :string,
             description:
-              "The text content of welcome email. Can be use EEX template with `user` and `instance_name` variables.",
+              "Text content of the welcome email. EEX template with user and instance_name variables can be used.",
             suggestions: ["Hello <%= user.name%>. \n Welcome to <%= instance_name%>\n"]
           }
         ]
@@ -1236,7 +1236,7 @@ config :pleroma, :config_description, [
           },
           %{
             key: :background,
-            type: :string,
+            type: {:string, :image},
             description:
               "URL of the background, unless viewing a user profile with a background that is set",
             suggestions: ["/images/city.jpg"]
@@ -1293,7 +1293,7 @@ config :pleroma, :config_description, [
           },
           %{
             key: :logo,
-            type: :string,
+            type: {:string, :image},
             description: "URL of the logo, defaults to Pleroma's logo",
             suggestions: ["/static/logo.png"]
           },
@@ -1325,7 +1325,7 @@ config :pleroma, :config_description, [
           %{
             key: :nsfwCensorImage,
             label: "NSFW Censor Image",
-            type: :string,
+            type: {:string, :image},
             description:
               "URL of the image to use for hiding NSFW media attachments in the timeline",
             suggestions: ["/static/img/nsfw.74818f9.png"]
@@ -1451,7 +1451,7 @@ config :pleroma, :config_description, [
       },
       %{
         key: :default_user_avatar,
-        type: :string,
+        type: {:string, :image},
         description: "URL of the default user avatar",
         suggestions: ["/images/avi.png"]
       }
@@ -2642,7 +2642,7 @@ config :pleroma, :config_description, [
     children: [
       %{
         key: :logo,
-        type: :string,
+        type: {:string, :image},
         description: "A path to a custom logo. Set it to `nil` to use the default Pleroma logo.",
         suggestions: ["some/path/logo.png"]
       },
@@ -3299,13 +3299,13 @@ config :pleroma, :config_description, [
     group: :pleroma,
     key: :connections_pool,
     type: :group,
-    description: "Advanced settings for `gun` connections pool",
+    description: "Advanced settings for `Gun` connections pool",
     children: [
       %{
         key: :connection_acquisition_wait,
         type: :integer,
         description:
-          "Timeout to acquire a connection from pool.The total max time is this value multiplied by the number of retries. Default: 250ms.",
+          "Timeout to acquire a connection from pool. The total max time is this value multiplied by the number of retries. Default: 250ms.",
         suggestions: [250]
       },
       %{
@@ -3340,7 +3340,7 @@ config :pleroma, :config_description, [
     group: :pleroma,
     key: :pools,
     type: :group,
-    description: "Advanced settings for `gun` workers pools",
+    description: "Advanced settings for `Gun` workers pools",
     children:
       Enum.map([:federation, :media, :upload, :default], fn pool_name ->
         %{
@@ -3369,7 +3369,7 @@ config :pleroma, :config_description, [
     group: :pleroma,
     key: :hackney_pools,
     type: :group,
-    description: "Advanced settings for `hackney` connections pools",
+    description: "Advanced settings for `Hackney` connections pools",
     children: [
       %{
         key: :federation,
@@ -3433,6 +3433,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :restrict_unauthenticated,
+    label: "Restrict Unauthenticated",
     type: :group,
     description:
       "Disallow viewing timelines, user profiles and statuses for unauthenticated users.",
@@ -3555,13 +3556,17 @@ config :pleroma, :config_description, [
         children: [
           %{
             key: "name",
+            label: "Name",
             type: :string,
-            description: "Name of the installed primary frontend"
+            description:
+              "Name of the installed primary frontend. Valid config must include both `Name` and `Reference` values."
           },
           %{
             key: "ref",
+            label: "Reference",
             type: :string,
-            description: "reference of the installed primary frontend to be used"
+            description:
+              "Reference of the installed primary frontend to be used. Valid config must include both `Name` and `Reference` values."
           }
         ]
       }
index 61bc9fd39093616ca0cd4db2361b7950cd03f87d..4e897455f03bbc0b241fa04052898def8556639e 100644 (file)
@@ -1342,6 +1342,75 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do
                args: ["auto-orient", "strip", {"implode", "1"}, {"resize", "3840x1080>"}]
              ]
     end
+
+    test "enables the welcome messages", %{conn: conn} do
+      clear_config([:welcome])
+
+      params = %{
+        "group" => ":pleroma",
+        "key" => ":welcome",
+        "value" => [
+          %{
+            "tuple" => [
+              ":direct_message",
+              [
+                %{"tuple" => [":enabled", true]},
+                %{"tuple" => [":message", "Welcome to Pleroma!"]},
+                %{"tuple" => [":sender_nickname", "pleroma"]}
+              ]
+            ]
+          },
+          %{
+            "tuple" => [
+              ":chat_message",
+              [
+                %{"tuple" => [":enabled", true]},
+                %{"tuple" => [":message", "Welcome to Pleroma!"]},
+                %{"tuple" => [":sender_nickname", "pleroma"]}
+              ]
+            ]
+          },
+          %{
+            "tuple" => [
+              ":email",
+              [
+                %{"tuple" => [":enabled", true]},
+                %{"tuple" => [":sender", %{"tuple" => ["pleroma@dev.dev", "Pleroma"]}]},
+                %{"tuple" => [":subject", "Welcome to <%= instance_name %>!"]},
+                %{"tuple" => [":html", "Welcome to <%= instance_name %>!"]},
+                %{"tuple" => [":text", "Welcome to <%= instance_name %>!"]}
+              ]
+            ]
+          }
+        ]
+      }
+
+      refute Pleroma.User.WelcomeEmail.enabled?()
+      refute Pleroma.User.WelcomeMessage.enabled?()
+      refute Pleroma.User.WelcomeChatMessage.enabled?()
+
+      res =
+        assert conn
+               |> put_req_header("content-type", "application/json")
+               |> post("/api/pleroma/admin/config", %{"configs" => [params]})
+               |> json_response_and_validate_schema(200)
+
+      assert Pleroma.User.WelcomeEmail.enabled?()
+      assert Pleroma.User.WelcomeMessage.enabled?()
+      assert Pleroma.User.WelcomeChatMessage.enabled?()
+
+      assert res == %{
+               "configs" => [
+                 %{
+                   "db" => [":direct_message", ":chat_message", ":email"],
+                   "group" => ":pleroma",
+                   "key" => ":welcome",
+                   "value" => params["value"]
+                 }
+               ],
+               "need_reboot" => false
+             }
+    end
   end
 
   describe "GET /api/pleroma/admin/config/descriptions" do