logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

welcome_chat_message.ex (1177B)


  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. defmodule Pleroma.User.WelcomeChatMessage do
  5. alias Pleroma.Config
  6. alias Pleroma.User
  7. alias Pleroma.Web.CommonAPI
  8. @spec enabled?() :: boolean()
  9. def enabled?, do: Config.get([:welcome, :chat_message, :enabled], false)
  10. @spec post_message(User.t()) :: {:ok, Pleroma.Activity.t() | nil}
  11. def post_message(user) do
  12. [:welcome, :chat_message, :sender_nickname]
  13. |> Config.get(nil)
  14. |> fetch_sender()
  15. |> do_post(user, welcome_message())
  16. end
  17. defp do_post(%User{} = sender, recipient, message)
  18. when is_binary(message) do
  19. CommonAPI.post_chat_message(
  20. sender,
  21. recipient,
  22. message
  23. )
  24. end
  25. defp do_post(_sender, _recipient, _message), do: {:ok, nil}
  26. defp fetch_sender(nickname) when is_binary(nickname) do
  27. with %User{local: true} = user <- User.get_cached_by_nickname(nickname) do
  28. user
  29. else
  30. _ -> nil
  31. end
  32. end
  33. defp fetch_sender(_), do: nil
  34. defp welcome_message do
  35. Config.get([:welcome, :chat_message, :message], nil)
  36. end
  37. end