Packages

phoenix_kit

1.7.71
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
phoenix_kit lib modules newsletters web lists.ex
Raw

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