move to 2.5.5
[anni] / lib / pleroma / user / welcome_chat_message.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.User.WelcomeChatMessage do
6   alias Pleroma.Config
7   alias Pleroma.User
8   alias Pleroma.Web.CommonAPI
9
10   @spec enabled?() :: boolean()
11   def enabled?, do: Config.get([:welcome, :chat_message, :enabled], false)
12
13   @spec post_message(User.t()) :: {:ok, Pleroma.Activity.t() | nil}
14   def post_message(user) do
15     [:welcome, :chat_message, :sender_nickname]
16     |> Config.get(nil)
17     |> fetch_sender()
18     |> do_post(user, welcome_message())
19   end
20
21   defp do_post(%User{} = sender, recipient, message)
22        when is_binary(message) do
23     CommonAPI.post_chat_message(
24       sender,
25       recipient,
26       message
27     )
28   end
29
30   defp do_post(_sender, _recipient, _message), do: {:ok, nil}
31
32   defp fetch_sender(nickname) when is_binary(nickname) do
33     with %User{local: true} = user <- User.get_cached_by_nickname(nickname) do
34       user
35     else
36       _ -> nil
37     end
38   end
39
40   defp fetch_sender(_), do: nil
41
42   defp welcome_message do
43     Config.get([:welcome, :chat_message, :message], nil)
44   end
45 end