logo

pleroma

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

welcome_message.ex (1241B)


  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.WelcomeMessage 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, :direct_message, :enabled], false)
  10. @spec post_message(User.t()) :: {:ok, Pleroma.Activity.t() | nil}
  11. def post_message(user) do
  12. [:welcome, :direct_message, :sender_nickname]
  13. |> Config.get(nil)
  14. |> fetch_sender()
  15. |> do_post(user, welcome_message())
  16. end
  17. defp do_post(%User{} = sender, %User{nickname: nickname}, message)
  18. when is_binary(message) do
  19. CommonAPI.post(
  20. sender,
  21. %{
  22. visibility: "direct",
  23. status: "@#{nickname}\n#{message}"
  24. }
  25. )
  26. end
  27. defp do_post(_sender, _recipient, _message), do: {:ok, nil}
  28. defp fetch_sender(nickname) when is_binary(nickname) do
  29. with %User{local: true} = user <- User.get_cached_by_nickname(nickname) do
  30. user
  31. else
  32. _ -> nil
  33. end
  34. end
  35. defp fetch_sender(_), do: nil
  36. defp welcome_message do
  37. Config.get([:welcome, :direct_message, :message], nil)
  38. end
  39. end