Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/mix/tasks/phoenix_kit.seed_templates.ex
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ defmodule Mix.Tasks.PhoenixKit.SeedTemplates do

{:error, :seed_failed} ->
IO.puts("❌ Failed to seed some system templates. Check the logs for details.")
System.halt(1)
raise "Failed to seed some system templates"
end
end

Expand Down
34 changes: 21 additions & 13 deletions lib/modules/emails/sqs_processor.ex
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,6 @@ defmodule PhoenixKit.Modules.Emails.SQSProcessor do
alias PhoenixKit.Modules.Emails
alias PhoenixKit.Modules.Emails.Event
alias PhoenixKit.Modules.Emails.Log
alias PhoenixKit.Modules.Newsletters
alias PhoenixKit.Modules.Newsletters.Broadcast, as: NewslettersBroadcast
alias PhoenixKit.Utils.Date, as: UtilsDate

import Ecto.Query
Expand Down Expand Up @@ -1396,15 +1394,21 @@ defmodule PhoenixKit.Modules.Emails.SQSProcessor do
end
end

# Updates newsletters delivery record when a matching SES event arrives
# Updates newsletters delivery record when a matching SES event arrives.
# Uses ModuleRegistry lookup so it works when Newsletters is an external package.
defp maybe_update_newsletters_delivery(message_id, event_type, timestamp) do
case Newsletters.find_delivery_by_message_id(message_id) do
nil -> :ok
delivery -> apply_delivery_event(delivery, event_type, timestamp)
newsletters_mod = PhoenixKit.ModuleRegistry.get_by_key("newsletters")

if newsletters_mod && Code.ensure_loaded?(newsletters_mod) &&
function_exported?(newsletters_mod, :find_delivery_by_message_id, 1) do
case newsletters_mod.find_delivery_by_message_id(message_id) do
nil -> :ok
delivery -> apply_delivery_event(newsletters_mod, delivery, event_type, timestamp)
end
end
end

defp apply_delivery_event(delivery, event_type, timestamp) do
defp apply_delivery_event(newsletters_mod, delivery, event_type, timestamp) do
{status, attrs} =
case event_type do
"Delivery" -> {"delivered", %{delivered_at: timestamp}}
Expand All @@ -1414,12 +1418,12 @@ defmodule PhoenixKit.Modules.Emails.SQSProcessor do
end

if status do
Newsletters.update_delivery_status(delivery, status, attrs)
increment_broadcast_counter(delivery.broadcast_uuid, event_type)
newsletters_mod.update_delivery_status(delivery, status, attrs)
increment_broadcast_counter(newsletters_mod, delivery.broadcast_uuid, event_type)
end
end

defp increment_broadcast_counter(broadcast_uuid, event_type) do
defp increment_broadcast_counter(newsletters_mod, broadcast_uuid, event_type) do
field_name =
case event_type do
"Delivery" -> :delivered_count
Expand All @@ -1429,9 +1433,13 @@ defmodule PhoenixKit.Modules.Emails.SQSProcessor do
end

if field_name do
NewslettersBroadcast
|> where([b], b.uuid == ^broadcast_uuid)
|> PhoenixKit.RepoHelper.repo().update_all(inc: [{field_name, 1}])
broadcast_mod = newsletters_mod |> Module.concat("Broadcast")

if Code.ensure_loaded?(broadcast_mod) do
broadcast_mod
|> where([b], b.uuid == ^broadcast_uuid)
|> PhoenixKit.RepoHelper.repo().update_all(inc: [{field_name, 1}])
end
end
end

Expand Down
31 changes: 18 additions & 13 deletions lib/modules/emails/web/emails.html.heex
Original file line number Diff line number Diff line change
Expand Up @@ -287,13 +287,14 @@
}
>
<:card_actions :let={log}>
<button
phx-click="view_details"
phx-value-uuid={log.uuid}
class="btn btn-xs btn-outline btn-primary"
>
<.icon name="hero-eye" class="w-3 h-3 mr-1" />{gettext("View")}
</button>
<.table_row_menu id={"email-card-menu-#{log.uuid}"} label={gettext("Email actions")}>
<.table_row_menu_button
phx-click="view_details"
phx-value-uuid={log.uuid}
icon="hero-eye"
label={gettext("View")}
/>
</.table_row_menu>
</:card_actions>
<.table_default_header>
<.table_default_row>
Expand Down Expand Up @@ -444,13 +445,17 @@
<% end %>
</div>
<% "actions" -> %>
<button
phx-click="view_details"
phx-value-uuid={log.uuid}
class="btn btn-xs btn-outline btn-primary"
<.table_row_menu
id={"email-menu-#{log.uuid}"}
label={gettext("Email actions")}
>
<.icon name="hero-eye" class="w-3 h-3 mr-1" /> View
</button>
<.table_row_menu_button
phx-click="view_details"
phx-value-uuid={log.uuid}
icon="hero-eye"
label={gettext("View")}
/>
</.table_row_menu>
<% _ -> %>
<span class="text-xs text-base-content/50">—</span>
<% end %>
Expand Down
80 changes: 0 additions & 80 deletions lib/modules/newsletters/broadcast.ex

This file was deleted.

115 changes: 0 additions & 115 deletions lib/modules/newsletters/broadcaster.ex

This file was deleted.

56 changes: 0 additions & 56 deletions lib/modules/newsletters/delivery.ex

This file was deleted.

Loading
Loading