Packages
phoenix_kit
1.2.4
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/modules_live.ex
defmodule PhoenixKitWeb.Live.ModulesLive do
use PhoenixKitWeb, :live_view
alias PhoenixKit.Utils.Routes
alias PhoenixKit.Settings
alias PhoenixKit.ReferralCodes
def mount(_params, session, socket) do
# Get current path for navigation
current_path = get_current_path(socket, session)
# Get project title from settings
project_title = Settings.get_setting("project_title", "PhoenixKit")
# Load module states
referral_codes_config = ReferralCodes.get_config()
socket =
socket
|> assign(:current_path, current_path)
|> assign(:page_title, "Modules")
|> assign(:project_title, project_title)
|> assign(:referral_codes_enabled, referral_codes_config.enabled)
|> assign(:referral_codes_required, referral_codes_config.required)
|> assign(:max_uses_per_code, referral_codes_config.max_uses_per_code)
|> assign(:max_codes_per_user, referral_codes_config.max_codes_per_user)
{:ok, socket}
end
def handle_event("toggle_referral_codes", _params, socket) do
# Since we're sending "toggle", we just flip the current state
new_enabled = !socket.assigns.referral_codes_enabled
result =
if new_enabled do
ReferralCodes.enable_system()
else
ReferralCodes.disable_system()
end
case result do
{:ok, _setting} ->
socket =
socket
|> assign(:referral_codes_enabled, new_enabled)
|> put_flash(
:info,
if(new_enabled,
do: "Referral codes system enabled",
else: "Referral codes system disabled"
)
)
{:noreply, socket}
{:error, _changeset} ->
socket = put_flash(socket, :error, "Failed to update referral codes system")
{:noreply, socket}
end
end
def handle_event("toggle_referral_codes_required", _params, socket) do
# Since we're sending "toggle", we just flip the current state
new_required = !socket.assigns.referral_codes_required
result = ReferralCodes.set_required(new_required)
case result do
{:ok, _setting} ->
socket =
socket
|> assign(:referral_codes_required, new_required)
|> put_flash(
:info,
if(new_required,
do: "Referral codes are now required",
else: "Referral codes are now optional"
)
)
{:noreply, socket}
{:error, _changeset} ->
socket = put_flash(socket, :error, "Failed to update referral codes requirement setting")
{:noreply, socket}
end
end
def handle_event("update_max_uses_per_code", %{"max_uses_per_code" => value}, socket) do
case Integer.parse(value) do
{max_uses, _} when max_uses > 0 and max_uses <= 10000 ->
case ReferralCodes.set_max_uses_per_code(max_uses) do
{:ok, _setting} ->
socket =
socket
|> assign(:max_uses_per_code, max_uses)
|> put_flash(:info, "Maximum uses per code updated to #{max_uses}")
{:noreply, socket}
{:error, _changeset} ->
socket = put_flash(socket, :error, "Failed to update maximum uses per code")
{:noreply, socket}
end
_ ->
socket = put_flash(socket, :error, "Please enter a valid number between 1 and 10,000")
{:noreply, socket}
end
end
def handle_event("update_max_codes_per_user", %{"max_codes_per_user" => value}, socket) do
case Integer.parse(value) do
{max_codes, _} when max_codes > 0 and max_codes <= 1000 ->
case ReferralCodes.set_max_codes_per_user(max_codes) do
{:ok, _setting} ->
socket =
socket
|> assign(:max_codes_per_user, max_codes)
|> put_flash(:info, "Maximum codes per user updated to #{max_codes}")
{:noreply, socket}
{:error, _changeset} ->
socket = put_flash(socket, :error, "Failed to update maximum codes per user")
{:noreply, socket}
end
_ ->
socket = put_flash(socket, :error, "Please enter a valid number between 1 and 1,000")
{:noreply, socket}
end
end
defp get_current_path(_socket, _session) do
# For ModulesLive, always return modules path
Routes.path("/admin/modules")
end
end