Packages
phoenix_kit
1.7.210
1.7.210
1.7.209
1.7.208
1.7.207
1.7.206
1.7.205
1.7.204
1.7.203
1.7.202
1.7.201
1.7.200
1.7.199
1.7.198
1.7.197
1.7.196
1.7.194
1.7.193
1.7.192
1.7.191
1.7.190
1.7.189
1.7.187
1.7.186
1.7.185
1.7.184
1.7.183
1.7.182
1.7.181
1.7.180
1.7.179
1.7.178
1.7.177
1.7.176
1.7.175
1.7.174
1.7.173
1.7.172
1.7.171
1.7.170
1.7.169
1.7.168
1.7.167
1.7.166
1.7.165
1.7.164
1.7.162
1.7.161
1.7.160
1.7.159
1.7.157
1.7.156
1.7.155
1.7.154
1.7.153
1.7.152
1.7.151
1.7.150
1.7.149
1.7.146
1.7.145
1.7.144
1.7.143
1.7.138
1.7.133
1.7.132
1.7.131
1.7.130
1.7.128
1.7.126
1.7.125
1.7.121
1.7.120
1.7.119
1.7.118
1.7.117
1.7.116
1.7.115
1.7.114
1.7.113
1.7.112
1.7.111
1.7.110
1.7.109
1.7.108
1.7.107
1.7.106
1.7.105
1.7.104
1.7.103
1.7.102
1.7.101
1.7.100
1.7.99
1.7.98
1.7.97
1.7.96
1.7.95
1.7.94
1.7.93
1.7.92
1.7.91
1.7.90
1.7.89
1.7.88
1.7.87
1.7.86
1.7.85
1.7.84
1.7.83
1.7.82
1.7.81
1.7.80
1.7.79
1.7.78
1.7.77
1.7.76
1.7.75
1.7.74
1.7.71
1.7.70
1.7.69
1.7.66
1.7.65
1.7.64
1.7.63
1.7.62
1.7.61
1.7.59
1.7.58
1.7.57
1.7.56
1.7.55
1.7.54
1.7.53
1.7.52
1.7.51
1.7.49
1.7.44
1.7.43
1.7.42
1.7.41
1.7.39
1.7.38
1.7.37
1.7.36
1.7.34
1.7.33
1.7.31
1.7.30
1.7.29
1.7.28
1.7.27
1.7.26
1.7.25
1.7.24
1.7.23
1.7.22
1.7.21
1.7.20
1.7.19
1.7.18
1.7.17
1.7.16
1.7.15
1.7.14
1.7.13
1.7.12
1.7.11
1.7.10
1.7.9
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.20
1.6.19
1.6.18
1.6.17
1.6.16
1.6.15
1.6.14
1.6.13
1.6.12
1.6.11
1.6.10
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.5.2
1.5.1
1.5.0
1.4.9
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.10
1.2.9
1.2.8
1.2.7
1.2.5
1.2.4
1.2.2
1.2.1
1.2.0
1.1.0
1.0.0
A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more
Current section
Files
Jump to
Current section
Files
lib/phoenix_kit_web/live/settings/send_profiles.ex
defmodule PhoenixKitWeb.Live.Settings.SendProfiles do
@moduledoc """
Send profiles list page — under the core Email Sending settings
(`/admin/settings/email-sending/profiles`).
Each send profile references an Integrations connection and carries
per-account send parameters (sender identity, rate limits, provider
"advanced" options). At most one profile may be the service-wide default.
"""
use PhoenixKitWeb, :live_view
use Gettext, backend: PhoenixKitWeb.Gettext
alias PhoenixKit.Email.SendProfiles
alias PhoenixKit.Settings
alias PhoenixKit.Utils.Routes
def mount(_params, _session, socket) do
socket =
socket
|> assign(:page_title, gettext("Send Profiles"))
|> assign(
:page_subtitle,
gettext(
"Service-wide default profile used by newsletter broadcasts. Transactional mail (auth, notifications) is routed by the Default Transactional Integration on the Email Sending page."
)
)
|> assign(:page_section, gettext("Email Sending"))
|> assign(:page_section_path, Routes.path("/admin/settings/email-sending"))
|> assign(:project_title, Settings.get_project_title())
|> assign(:current_path, get_current_path(socket.assigns.current_locale_base))
|> assign(:send_profiles, [])
{:ok, socket}
end
def handle_params(_params, _url, socket) do
{:noreply, assign(socket, :send_profiles, SendProfiles.list_send_profiles())}
end
def handle_event("make_default", %{"uuid" => uuid}, socket) do
send_profile = SendProfiles.get_send_profile!(uuid)
case SendProfiles.set_default_send_profile(send_profile) do
{:ok, _updated} ->
{:noreply,
socket
|> put_flash(:info, gettext("Default send profile updated"))
|> assign(:send_profiles, SendProfiles.list_send_profiles())}
{:error, _reason} ->
{:noreply, put_flash(socket, :error, gettext("Could not set default send profile"))}
end
end
def handle_event("delete_send_profile", %{"uuid" => uuid}, socket) do
handle_delete(socket, uuid)
end
defp handle_delete(socket, uuid) do
send_profile = SendProfiles.get_send_profile!(uuid)
case SendProfiles.delete_send_profile(send_profile) do
{:ok, _} ->
{:noreply,
socket
|> put_flash(:info, gettext("Send profile deleted"))
|> assign(:send_profiles, SendProfiles.list_send_profiles())}
{:error, _} ->
{:noreply, put_flash(socket, :error, gettext("Cannot delete send profile"))}
end
end
# Card-view field rows for `<.table_default toggleable>` — mirrors the
# table columns (name/actions are handled by card_header/card_actions).
defp send_profile_card_fields(send_profile) do
[
%{label: gettext("Provider"), value: send_profile.provider_kind},
%{
label: gettext("From"),
value: send_profile.from_name || send_profile.from_email || "-"
},
%{
label: gettext("Rate"),
value:
if(send_profile.rate_per_hour,
do: gettext("%{count}/hr", count: send_profile.rate_per_hour),
else: "-"
)
},
%{
label: gettext("Status"),
value: enabled_badge(%{enabled: send_profile.enabled, size: :sm, class: ""})
}
]
end
defp get_current_path(locale) do
Routes.path("/admin/settings/email-sending/profiles", locale: locale)
end
end