summaryrefslogtreecommitdiff
path: root/lib/pleroma/user/welcome_chat_message.ex
blob: 0d6690e34159db6bfc57d8369ac70e0ab2eda666 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# Pleroma: A lightweight social networking server
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Pleroma.User.WelcomeChatMessage do
  alias Pleroma.Config
  alias Pleroma.User
  alias Pleroma.Web.CommonAPI

  @spec enabled?() :: boolean()
  def enabled?, do: Config.get([:welcome, :chat_message, :enabled], false)

  @spec post_message(User.t()) :: {:ok, Pleroma.Activity.t() | nil}
  def post_message(user) do
    [:welcome, :chat_message, :sender_nickname]
    |> Config.get(nil)
    |> fetch_sender()
    |> do_post(user, welcome_message())
  end

  defp do_post(%User{} = sender, recipient, message)
       when is_binary(message) do
    CommonAPI.post_chat_message(
      sender,
      recipient,
      message
    )
  end

  defp do_post(_sender, _recipient, _message), do: {:ok, nil}

  defp fetch_sender(nickname) when is_binary(nickname) do
    with %User{local: true} = user <- User.get_cached_by_nickname(nickname) do
      user
    else
      _ -> nil
    end
  end

  defp fetch_sender(_), do: nil

  defp welcome_message do
    Config.get([:welcome, :chat_message, :message], nil)
  end
end