mirror of
https://github.com/ClaperCo/Claper.git
synced 2025-12-16 11:57:58 +01:00
* Update translation files I run `mix gettext.extract` and `mix gettext.merge priv/gettext` as it seems that the files were somewhat outdated. * Fix email change confirmation Send the confirmation email to the new address * Tweak email change confirmation email * Run ./dev.sh format
75 lines
2.0 KiB
Elixir
75 lines
2.0 KiB
Elixir
defmodule Claper.Workers.Mailers do
|
|
use Oban.Worker, queue: :mailers
|
|
|
|
alias Claper.Mailer
|
|
alias ClaperWeb.Notifiers.{UserNotifier, LeaderNotifier}
|
|
|
|
@impl Oban.Worker
|
|
def perform(%Oban.Job{args: %{"type" => type, "user_id" => user_id, "url" => url}})
|
|
when type in ["confirm", "reset"] do
|
|
user = Claper.Accounts.get_user!(user_id)
|
|
|
|
email =
|
|
case type do
|
|
"confirm" -> UserNotifier.confirm(user, url)
|
|
"reset" -> UserNotifier.reset(user, url)
|
|
end
|
|
|
|
Mailer.deliver(email)
|
|
end
|
|
|
|
def perform(%Oban.Job{
|
|
args: %{"type" => "update_email", "new_email" => new_email, "url" => url}
|
|
}) do
|
|
email = UserNotifier.update_email(new_email, url)
|
|
Mailer.deliver(email)
|
|
end
|
|
|
|
def perform(%Oban.Job{args: %{"type" => "magic", "email" => email, "url" => url}}) do
|
|
email = UserNotifier.magic(email, url)
|
|
Mailer.deliver(email)
|
|
end
|
|
|
|
def perform(%Oban.Job{args: %{"type" => "welcome", "email" => email}}) do
|
|
email = UserNotifier.welcome(email)
|
|
Mailer.deliver(email)
|
|
end
|
|
|
|
def perform(%Oban.Job{
|
|
args: %{
|
|
"type" => "event_invitation",
|
|
"event_name" => event_name,
|
|
"email" => email,
|
|
"url" => url
|
|
}
|
|
}) do
|
|
email = LeaderNotifier.event_invitation(event_name, email, url)
|
|
Mailer.deliver(email)
|
|
end
|
|
|
|
# Helper functions to create jobs
|
|
def new_confirmation(user_id, url) do
|
|
new(%{type: "confirm", user_id: user_id, url: url})
|
|
end
|
|
|
|
def new_reset_password(user_id, url) do
|
|
new(%{type: "reset", user_id: user_id, url: url})
|
|
end
|
|
|
|
def new_update_email(new_email, url) do
|
|
new(%{type: "update_email", new_email: new_email, url: url})
|
|
end
|
|
|
|
def new_magic_link(email, url) do
|
|
new(%{type: "magic", email: email, url: url})
|
|
end
|
|
|
|
def new_welcome(email) do
|
|
new(%{type: "welcome", email: email})
|
|
end
|
|
|
|
def event_invitation(event_name, email, url) do
|
|
new(%{type: "event_invitation", event_name: event_name, email: email, url: url})
|
|
end
|
|
end
|