Packages
phoenix_kit
1.7.70
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/modules/newsletters/web/lists.ex
defmodule PhoenixKit.Modules.Newsletters.Web.Lists do
@moduledoc """
LiveView for managing newsletter lists.
"""
use PhoenixKitWeb, :live_view
alias PhoenixKit.Modules.Newsletters
alias PhoenixKit.Settings
alias PhoenixKit.Utils.Routes
@impl true
def mount(_params, _session, socket) do
if Newsletters.enabled?() do
lists = Newsletters.list_lists()
project_title = Settings.get_project_title()
socket =
socket
|> assign(:page_title, "Newsletters Lists")
|> assign(:project_title, project_title)
|> assign(:url_path, Routes.path("/admin/newsletters/lists"))
|> assign(:lists, lists)
|> assign(:show_confirm_modal, false)
|> assign(:confirm_action, nil)
|> assign(:confirm_target, nil)
|> assign(:confirm_title, "")
|> assign(:confirm_message, "")
{:ok, socket}
else
{:ok,
socket
|> put_flash(:error, "Newsletters module is not enabled")
|> push_navigate(to: Routes.path("/admin"))}
end
end
@impl true
def handle_event("show_confirm", %{"action" => "delete", "uuid" => uuid}, socket) do
{:noreply,
socket
|> assign(:show_confirm_modal, true)
|> assign(:confirm_action, :delete)
|> assign(:confirm_target, uuid)
|> assign(:confirm_title, "Delete List")
|> assign(:confirm_message, "This list and all its data will be permanently deleted.")}
end
@impl true
def handle_event("hide_confirm", _params, socket) do
{:noreply,
socket
|> assign(:show_confirm_modal, false)
|> assign(:confirm_action, nil)
|> assign(:confirm_target, nil)}
end
@impl true
def handle_event("confirm_action", _params, socket) do
socket = assign(socket, :show_confirm_modal, false)
case socket.assigns.confirm_action do
:delete ->
handle_delete(socket, socket.assigns.confirm_target)
_ ->
{:noreply, socket}
end
end
defp handle_delete(socket, uuid) do
list = Newsletters.get_list!(uuid)
case Newsletters.delete_list(list) do
{:ok, _} ->
{:noreply,
socket
|> put_flash(:info, "List deleted")
|> assign(:lists, Newsletters.list_lists())}
{:error, _} ->
{:noreply, put_flash(socket, :error, "Cannot delete list")}
end
end
end