Avoid `use Phoenix.Swoosh` to prevent recompiling the Endpoint
authorAlex Gleason <alex@alexgleason.me>
Sat, 22 May 2021 19:48:13 +0000 (14:48 -0500)
committerAlex Gleason <alex@alexgleason.me>
Tue, 1 Jun 2021 21:17:03 +0000 (16:17 -0500)
Speeds up recompilation by fixing cycles in UserEmail

lib/pleroma/emails/user_email.ex

index 52f3d419d7bc0715d97ea8ea1aacd9cda3d81056..e38c681bae9ad3cacaf5e826558d58e58c3d2eba 100644 (file)
@@ -5,15 +5,22 @@
 defmodule Pleroma.Emails.UserEmail do
   @moduledoc "User emails"
 
-  use Phoenix.Swoosh, view: Pleroma.Web.EmailView, layout: {Pleroma.Web.LayoutView, :email}
-
   alias Pleroma.Config
   alias Pleroma.User
   alias Pleroma.Web.Endpoint
   alias Pleroma.Web.Router
 
+  import Swoosh.Email
+  import Phoenix.Swoosh, except: [render_body: 3]
   import Pleroma.Config.Helpers, only: [instance_name: 0, sender: 0]
 
+  def render_body(email, template, assigns \\ %{}) do
+    email
+    |> put_new_layout({Pleroma.Web.LayoutView, :email})
+    |> put_new_view(Pleroma.Web.EmailView)
+    |> Phoenix.Swoosh.render_body(template, assigns)
+  end
+
   defp recipient(email, nil), do: email
   defp recipient(email, name), do: {name, email}
   defp recipient(%User{} = user), do: recipient(user.email, user.name)