forked from AkkomaGang/akkoma
Add optional welcome message.
This commit is contained in:
parent
1ce1b7b58d
commit
d812a347ca
5 changed files with 58 additions and 1 deletions
|
@ -162,7 +162,9 @@
|
||||||
mrf_transparency: true,
|
mrf_transparency: true,
|
||||||
autofollowed_nicknames: [],
|
autofollowed_nicknames: [],
|
||||||
max_pinned_statuses: 1,
|
max_pinned_statuses: 1,
|
||||||
no_attachment_links: false
|
no_attachment_links: false,
|
||||||
|
welcome_user_nickname: nil,
|
||||||
|
welcome_message: nil
|
||||||
|
|
||||||
config :pleroma, :markup,
|
config :pleroma, :markup,
|
||||||
# XXX - unfortunately, inline images must be enabled by default right now, because
|
# XXX - unfortunately, inline images must be enabled by default right now, because
|
||||||
|
|
|
@ -97,6 +97,8 @@ config :pleroma, Pleroma.Mailer,
|
||||||
* `max_pinned_statuses`: The maximum number of pinned statuses. `0` will disable the feature.
|
* `max_pinned_statuses`: The maximum number of pinned statuses. `0` will disable the feature.
|
||||||
* `autofollowed_nicknames`: Set to nicknames of (local) users that every new user should automatically follow.
|
* `autofollowed_nicknames`: Set to nicknames of (local) users that every new user should automatically follow.
|
||||||
* `no_attachment_links`: Set to true to disable automatically adding attachment link text to statuses
|
* `no_attachment_links`: Set to true to disable automatically adding attachment link text to statuses
|
||||||
|
* `welcome_message`: A message that will be send to a newly registered users as a direct message.
|
||||||
|
* `welcome_user_nickname`: The nickname of the user that sends the welcome message.
|
||||||
|
|
||||||
## :logger
|
## :logger
|
||||||
* `backends`: `:console` is used to send logs to stdout, `{ExSyslogger, :ex_syslogger}` to log to syslog
|
* `backends`: `:console` is used to send logs to stdout, `{ExSyslogger, :ex_syslogger}` to log to syslog
|
||||||
|
|
|
@ -261,6 +261,7 @@ defp autofollow_users(user) do
|
||||||
def register(%Ecto.Changeset{} = changeset) do
|
def register(%Ecto.Changeset{} = changeset) do
|
||||||
with {:ok, user} <- Repo.insert(changeset),
|
with {:ok, user} <- Repo.insert(changeset),
|
||||||
{:ok, user} <- autofollow_users(user),
|
{:ok, user} <- autofollow_users(user),
|
||||||
|
{:ok, _} <- Pleroma.User.WelcomeMessage.post_welcome_message_to_user(user),
|
||||||
{:ok, _} <- try_send_confirmation_email(user) do
|
{:ok, _} <- try_send_confirmation_email(user) do
|
||||||
{:ok, user}
|
{:ok, user}
|
||||||
end
|
end
|
||||||
|
|
33
lib/pleroma/user/welcome_message.ex
Normal file
33
lib/pleroma/user/welcome_message.ex
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
defmodule Pleroma.User.WelcomeMessage do
|
||||||
|
alias Pleroma.User
|
||||||
|
alias Pleroma.Web.CommonAPI
|
||||||
|
import Ecto.Query
|
||||||
|
|
||||||
|
def post_welcome_message_to_user(user) do
|
||||||
|
with %User{} = sender_user <- welcome_user(),
|
||||||
|
message when is_binary(message) <- welcome_message() do
|
||||||
|
CommonAPI.post(sender_user, %{
|
||||||
|
"visibility" => "direct",
|
||||||
|
"status" => "@#{user.nickname}\n#{message}"
|
||||||
|
})
|
||||||
|
else
|
||||||
|
_ -> {:ok, nil}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp welcome_user() do
|
||||||
|
if nickname = Pleroma.Config.get([:instance, :welcome_user_nickname]) do
|
||||||
|
from(u in User,
|
||||||
|
where: u.local == true,
|
||||||
|
where: u.nickname == ^nickname
|
||||||
|
)
|
||||||
|
|> Pleroma.Repo.one()
|
||||||
|
else
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp welcome_message() do
|
||||||
|
Pleroma.Config.get([:instance, :welcome_message])
|
||||||
|
end
|
||||||
|
end
|
|
@ -196,6 +196,25 @@ test "it autofollows accounts that are set for it" do
|
||||||
|
|
||||||
assert User.following?(registered_user, user)
|
assert User.following?(registered_user, user)
|
||||||
refute User.following?(registered_user, remote_user)
|
refute User.following?(registered_user, remote_user)
|
||||||
|
|
||||||
|
Pleroma.Config.put([:instance, :autofollowed_nicknames], [])
|
||||||
|
end
|
||||||
|
|
||||||
|
test "it sends a welcome message if it is set" do
|
||||||
|
welcome_user = insert(:user)
|
||||||
|
|
||||||
|
Pleroma.Config.put([:instance, :welcome_user_nickname], welcome_user.nickname)
|
||||||
|
Pleroma.Config.put([:instance, :welcome_message], "Hello, this is a cool site")
|
||||||
|
|
||||||
|
cng = User.register_changeset(%User{}, @full_user_data)
|
||||||
|
{:ok, registered_user} = User.register(cng)
|
||||||
|
|
||||||
|
activity = Repo.one(Pleroma.Activity)
|
||||||
|
assert registered_user.ap_id in activity.recipients
|
||||||
|
assert activity.data["object"]["content"] =~ "cool site"
|
||||||
|
|
||||||
|
Pleroma.Config.put([:instance, :welcome_user_nickname], nil)
|
||||||
|
Pleroma.Config.put([:instance, :welcome_message], nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
test "it requires an email, name, nickname and password, bio is optional" do
|
test "it requires an email, name, nickname and password, bio is optional" do
|
||||||
|
|
Loading…
Reference in a new issue