Rename the non-federating Chat feature to Shout
authorMark Felder <feld@FreeBSD.org>
Mon, 3 Aug 2020 22:08:35 +0000 (17:08 -0500)
committerMark Felder <feld@feld.me>
Tue, 1 Jun 2021 16:49:14 +0000 (11:49 -0500)
CHANGELOG.md
config/config.exs
config/description.exs
lib/pleroma/config/transfer_task.ex
lib/pleroma/web/channels/user_socket.ex
lib/pleroma/web/mastodon_api/views/instance_view.ex
lib/pleroma/web/shout_channel.ex [moved from lib/pleroma/web/chat_channel.ex with 78% similarity]
test/pleroma/config/transfer_task_test.exs
test/pleroma/web/admin_api/controllers/config_controller_test.exs
test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs
test/pleroma/web/shout_channel_test.ex [moved from test/pleroma/web/chat_channel_test.exs with 80% similarity]

index feac7b1c30e30a959f8da5de922a969f72115ea5..1c08710a3a95a7e558314f8ab5036e38a7eededa 100644 (file)
@@ -8,6 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 
 ### Changed
 
+- **Breaking:** Configuration: `:chat, enabled` moved to `:shout, enabled` and `:instance, chat_limit` moved to `:instance, shout_limit`
 - The `application` metadata returned with statuses is no longer hardcoded. Apps that want to display these details will now have valid data for new posts after this change.
 - HTTPSecurityPlug now sends a response header to opt out of Google's FLoC (Federated Learning of Cohorts) targeted advertising.
 - Email address is now returned if requesting user is the owner of the user account so it can be exposed in client and FE user settings UIs.
index d333c618ecb28c6b7604ac9bbe86c80c87859417..8c8ed52249c97b26ca216deb6f0743144bdf12a6 100644 (file)
@@ -190,7 +190,7 @@ config :pleroma, :instance,
   instance_thumbnail: "/instance/thumbnail.jpeg",
   limit: 5_000,
   description_limit: 5_000,
-  chat_limit: 5_000,
+  shout_limit: 5_000,
   remote_limit: 100_000,
   upload_limit: 16_000_000,
   avatar_upload_limit: 2_000_000,
@@ -457,7 +457,7 @@ config :pleroma, :media_preview_proxy,
   image_quality: 85,
   min_content_length: 100 * 1024
 
-config :pleroma, :chat, enabled: true
+config :pleroma, :shoutbox, enabled: true
 
 config :phoenix, :format_encoders, json: Jason
 
index f00c53d287cc32f457fb6e9023f325ec312059d9..040deab9697fb485d895fcc0a3fcb83ceebd00fb 100644 (file)
@@ -545,9 +545,9 @@ config :pleroma, :config_description, [
         ]
       },
       %{
-        key: :chat_limit,
+        key: :shout_limit,
         type: :integer,
-        description: "Character limit of the instance chat messages",
+        description: "Character limit of the instance shout messages",
         suggestions: [
           5_000
         ]
@@ -2652,9 +2652,9 @@ config :pleroma, :config_description, [
   },
   %{
     group: :pleroma,
-    key: :chat,
+    key: :shout,
     type: :group,
-    description: "Pleroma chat settings",
+    description: "Pleroma shout settings",
     children: [
       %{
         key: :enabled,
index 1e3ae82d077da2f917de8aa1f124c0cb93e95f2f..d5c6081a240834a03222bf336f43b42398348582 100644 (file)
@@ -16,7 +16,7 @@ defmodule Pleroma.Config.TransferTask do
   defp reboot_time_keys,
     do: [
       {:pleroma, :hackney_pools},
-      {:pleroma, :chat},
+      {:pleroma, :shout},
       {:pleroma, Oban},
       {:pleroma, :rate_limit},
       {:pleroma, :markup},
index 1c09b67682fbaa49073d1ad035065e42d2e0f251..130809bb79ce293114b0ca774f3d6e0d96e26d7c 100644 (file)
@@ -8,7 +8,7 @@ defmodule Pleroma.Web.UserSocket do
 
   ## Channels
   # channel "room:*", Pleroma.Web.RoomChannel
-  channel("chat:*", Pleroma.Web.ChatChannel)
+  channel("shout:*", Pleroma.Web.ShoutChannel)
 
   # Socket params are passed from the client and can
   # be used to verify and authenticate a user. After
@@ -22,7 +22,7 @@ defmodule Pleroma.Web.UserSocket do
   # See `Phoenix.Token` documentation for examples in
   # performing token verification on connect.
   def connect(%{"token" => token}, socket) do
-    with true <- Pleroma.Config.get([:chat, :enabled]),
+    with true <- Pleroma.Config.get([:shout, :enabled]),
          {:ok, user_id} <- Phoenix.Token.verify(socket, "user socket", token, max_age: 84_600),
          %User{} = user <- Pleroma.User.get_cached_by_id(user_id) do
       {:ok, assign(socket, :user_name, user.nickname)}
index 005705d973fdf78b8cad45a8f51e2894d4377df1..75964f176259367cbb6d754194b180f6ad6c0c73 100644 (file)
@@ -37,7 +37,7 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
       background_upload_limit: Keyword.get(instance, :background_upload_limit),
       banner_upload_limit: Keyword.get(instance, :banner_upload_limit),
       background_image: Pleroma.Web.Endpoint.url() <> Keyword.get(instance, :background_image),
-      chat_limit: Keyword.get(instance, :chat_limit),
+      shout_limit: Keyword.get(instance, :shout_limit),
       description_limit: Keyword.get(instance, :description_limit),
       pleroma: %{
         metadata: %{
@@ -69,8 +69,8 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do
       if Config.get([:gopher, :enabled]) do
         "gopher"
       end,
-      if Config.get([:chat, :enabled]) do
-        "chat"
+      if Config.get([:shout, :enabled]) do
+        "shout"
       end,
       if Config.get([:instance, :allow_relay]) do
         "relay"
similarity index 78%
rename from lib/pleroma/web/chat_channel.ex
rename to lib/pleroma/web/shout_channel.ex
index 4008129e9754517b9ac734cae6c0eb08cf0b0bc6..1d97858d6406aada31c2fb64d6381b82fef47013 100644 (file)
@@ -2,31 +2,31 @@
 # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
-defmodule Pleroma.Web.ChatChannel do
+defmodule Pleroma.Web.ShoutChannel do
   use Phoenix.Channel
 
   alias Pleroma.User
-  alias Pleroma.Web.ChatChannel.ChatChannelState
   alias Pleroma.Web.MastodonAPI.AccountView
+  alias Pleroma.Web.ShoutChannel.ShoutChannelState
 
-  def join("chat:public", _message, socket) do
+  def join("shout:public", _message, socket) do
     send(self(), :after_join)
     {:ok, socket}
   end
 
   def handle_info(:after_join, socket) do
-    push(socket, "messages", %{messages: ChatChannelState.messages()})
+    push(socket, "messages", %{messages: ShoutChannelState.messages()})
     {:noreply, socket}
   end
 
   def handle_in("new_msg", %{"text" => text}, %{assigns: %{user_name: user_name}} = socket) do
     text = String.trim(text)
 
-    if String.length(text) in 1..Pleroma.Config.get([:instance, :chat_limit]) do
+    if String.length(text) in 1..Pleroma.Config.get([:instance, :shout_limit]) do
       author = User.get_cached_by_nickname(user_name)
       author_json = AccountView.render("show.json", user: author, skip_visibility_check: true)
 
-      message = ChatChannelState.add_message(%{text: text, author: author_json})
+      message = ShoutChannelState.add_message(%{text: text, author: author_json})
 
       broadcast!(socket, "new_msg", message)
     end
@@ -35,7 +35,7 @@ defmodule Pleroma.Web.ChatChannel do
   end
 end
 
-defmodule Pleroma.Web.ChatChannel.ChatChannelState do
+defmodule Pleroma.Web.ShoutChannel.ShoutChannelState do
   use Agent
 
   @max_messages 20
index 8ae5d3b8142e5cb3a6cbb2461b1412c2012c854d..7d51fd84ce50fa4a3f0f6cac0a4480d9b96ed753 100644 (file)
@@ -93,8 +93,8 @@ defmodule Pleroma.Config.TransferTaskTest do
     end
 
     test "on reboot time key" do
-      clear_config(:chat)
-      insert(:config, key: :chat, value: [enabled: false])
+      clear_config(:shout)
+      insert(:config, key: :shout, value: [enabled: false])
       assert capture_log(fn -> TransferTask.start_link([]) end) =~ "pleroma restarted"
     end
 
@@ -105,10 +105,10 @@ defmodule Pleroma.Config.TransferTaskTest do
     end
 
     test "don't restart pleroma on reboot time key and subkey if there is false flag" do
-      clear_config(:chat)
+      clear_config(:shout)
       clear_config(Pleroma.Captcha)
 
-      insert(:config, key: :chat, value: [enabled: false])
+      insert(:config, key: :shout, value: [enabled: false])
       insert(:config, key: Pleroma.Captcha, value: [seconds_valid: 60])
 
       refute String.contains?(
index c39c1b1e19ed4fa62278c6135a97f246cdbd03e9..d8ca07cd37a8a030a4c939226dfe09fc7bd66015 100644 (file)
@@ -409,7 +409,7 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do
     end
 
     test "saving config which need pleroma reboot", %{conn: conn} do
-      clear_config([:chat, :enabled], true)
+      clear_config([:shout, :enabled], true)
 
       assert conn
              |> put_req_header("content-type", "application/json")
@@ -417,7 +417,7 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do
                "/api/pleroma/admin/config",
                %{
                  configs: [
-                   %{group: ":pleroma", key: ":chat", value: [%{"tuple" => [":enabled", true]}]}
+                   %{group: ":pleroma", key: ":shout", value: [%{"tuple" => [":enabled", true]}]}
                  ]
                }
              )
@@ -426,7 +426,7 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do
                  %{
                    "db" => [":enabled"],
                    "group" => ":pleroma",
-                   "key" => ":chat",
+                   "key" => ":shout",
                    "value" => [%{"tuple" => [":enabled", true]}]
                  }
                ],
@@ -454,7 +454,7 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do
     end
 
     test "update setting which need reboot, don't change reboot flag until reboot", %{conn: conn} do
-      clear_config([:chat, :enabled], true)
+      clear_config([:shout, :enabled], true)
 
       assert conn
              |> put_req_header("content-type", "application/json")
@@ -462,7 +462,7 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do
                "/api/pleroma/admin/config",
                %{
                  configs: [
-                   %{group: ":pleroma", key: ":chat", value: [%{"tuple" => [":enabled", true]}]}
+                   %{group: ":pleroma", key: ":shout", value: [%{"tuple" => [":enabled", true]}]}
                  ]
                }
              )
@@ -471,7 +471,7 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do
                  %{
                    "db" => [":enabled"],
                    "group" => ":pleroma",
-                   "key" => ":chat",
+                   "key" => ":shout",
                    "value" => [%{"tuple" => [":enabled", true]}]
                  }
                ],
index f137743beea4757079b8622bac30e24288f968c1..e76cbc75b348a45f61c97b5f4366ef44e79951d4 100644 (file)
@@ -38,7 +38,7 @@ defmodule Pleroma.Web.MastodonAPI.InstanceControllerTest do
              "background_upload_limit" => _,
              "banner_upload_limit" => _,
              "background_image" => from_config_background,
-             "chat_limit" => _,
+             "shout_limit" => _,
              "description_limit" => _
            } = result
 
similarity index 80%
rename from test/pleroma/web/chat_channel_test.exs
rename to test/pleroma/web/shout_channel_test.ex
index 29999701c52f315a7a69ab38bd780e4629c81e6a..ba6730cebd4b9ecf3029b36415ea97c339c9821e 100644 (file)
@@ -2,9 +2,9 @@
 # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
-defmodule Pleroma.Web.ChatChannelTest do
+defmodule Pleroma.Web.ShoutChannelTest do
   use Pleroma.Web.ChannelCase
-  alias Pleroma.Web.ChatChannel
+  alias Pleroma.Web.ShoutChannel
   alias Pleroma.Web.UserSocket
 
   import Pleroma.Factory
@@ -14,7 +14,7 @@ defmodule Pleroma.Web.ChatChannelTest do
 
     {:ok, _, socket} =
       socket(UserSocket, "", %{user_name: user.nickname})
-      |> subscribe_and_join(ChatChannel, "chat:public")
+      |> subscribe_and_join(ShoutChannel, "shout:public")
 
     {:ok, socket: socket}
   end
@@ -25,7 +25,7 @@ defmodule Pleroma.Web.ChatChannelTest do
   end
 
   describe "message lengths" do
-    setup do: clear_config([:instance, :chat_limit])
+    setup do: clear_config([:instance, :shout_limit])
 
     test "it ignores messages of length zero", %{socket: socket} do
       push(socket, "new_msg", %{"text" => ""})
@@ -33,7 +33,7 @@ defmodule Pleroma.Web.ChatChannelTest do
     end
 
     test "it ignores messages above a certain length", %{socket: socket} do
-      clear_config([:instance, :chat_limit], 2)
+      Pleroma.Config.put([:instance, :shout_limit], 2)
       push(socket, "new_msg", %{"text" => "123"})
       refute_broadcast("new_msg", %{text: "123"})
     end