Improve profile registration
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
71
lib/web/email/follow.ex
Normal file
71
lib/web/email/follow.ex
Normal file
@@ -0,0 +1,71 @@
|
||||
defmodule Mobilizon.Web.Email.Follow do
|
||||
@moduledoc """
|
||||
Handles emails sent about (instance) follow.
|
||||
"""
|
||||
use Bamboo.Phoenix, view: Mobilizon.Web.EmailView
|
||||
|
||||
import Bamboo.Phoenix
|
||||
import Mobilizon.Web.Gettext
|
||||
|
||||
alias Mobilizon.Users
|
||||
alias Mobilizon.Actors.{Actor, Follower}
|
||||
alias Mobilizon.Federation.ActivityPub.Relay
|
||||
alias Mobilizon.Users.User
|
||||
alias Mobilizon.Web.{Email, Gettext}
|
||||
|
||||
@doc """
|
||||
Send follow notification to admins if the followed actor
|
||||
"""
|
||||
@spec send_notification_to_admins(Follower.t()) :: :ok
|
||||
def send_notification_to_admins(
|
||||
%Follower{
|
||||
# approved: false,
|
||||
actor: %Actor{} = follower,
|
||||
target_actor: %Actor{id: target_actor_id}
|
||||
} = _follow
|
||||
) do
|
||||
relay_actor = Relay.get_actor()
|
||||
|
||||
if relay_actor.id == target_actor_id do
|
||||
Enum.each(Users.list_admins(), fn admin ->
|
||||
send_notification_to_admin(admin, follower)
|
||||
end)
|
||||
end
|
||||
|
||||
:ok
|
||||
end
|
||||
|
||||
def send_notification_to_admins(_), do: :ok
|
||||
|
||||
defp send_notification_to_admin(
|
||||
%User{email: email, locale: locale},
|
||||
%Actor{type: follower_type} = follower
|
||||
) do
|
||||
Gettext.put_locale(locale)
|
||||
|
||||
subject =
|
||||
if follower_type == :Application do
|
||||
gettext(
|
||||
"Instance %{name} (%{domain}) requests to follow your instance",
|
||||
name: follower.name,
|
||||
domain: follower.domain
|
||||
)
|
||||
else
|
||||
gettext(
|
||||
"%{name} requests to follow your instance",
|
||||
name: Actor.display_name_and_username(follower)
|
||||
)
|
||||
end
|
||||
|
||||
Email.base_email(to: email, subject: subject)
|
||||
|> assign(:locale, locale)
|
||||
|> assign(:follower, follower)
|
||||
|> assign(:subject, subject)
|
||||
|> render(:instance_follow)
|
||||
|> Email.Mailer.deliver_later()
|
||||
|
||||
:ok
|
||||
end
|
||||
|
||||
defp send_notification_to_admin(_, _), do: :ok
|
||||
end
|
||||
Reference in New Issue
Block a user