Packages
phoenix_kit
1.7.98
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/users/media.ex
defmodule PhoenixKitWeb.Live.Users.Media do
@moduledoc """
Media management LiveView — thin wrapper around `MediaBrowser` LiveComponent.
This LiveView owns the page layout and assigns required by
`LayoutWrapper.app_layout`. All media browser state and logic live in
`PhoenixKitWeb.Components.MediaBrowser`.
"""
use PhoenixKitWeb, :live_view
alias PhoenixKit.Settings
alias PhoenixKit.Utils.Routes
def mount(params, _session, socket) do
locale = params["locale"] || socket.assigns[:current_locale]
settings =
Settings.get_settings_cached(
["project_title"],
%{"project_title" => PhoenixKit.Config.get(:project_title, "PhoenixKit")}
)
initial_params = %{
folder: params["folder"],
q: params["q"] || "",
page:
case Integer.parse(params["page"] || "1") do
{n, _} when n > 0 -> n
_ -> 1
end,
filter_orphaned: params["orphaned"] == "1",
view: params["view"]
}
socket =
socket
|> assign(:page_title, "Media")
|> assign(:project_title, settings["project_title"])
|> assign(:current_locale, locale)
|> assign(:url_path, Routes.path("/admin/media"))
|> assign(:initial_params, initial_params)
{:ok, socket}
end
def handle_params(params, _uri, socket) do
if connected?(socket) do
folder = params["folder"]
q = params["q"] || ""
page =
case Integer.parse(params["page"] || "1") do
{n, _} when n > 0 -> n
_ -> 1
end
filter_orphaned = params["orphaned"] == "1"
view = params["view"]
send_update(PhoenixKitWeb.Components.MediaBrowser,
id: "media-browser",
nav_params: %{
folder: folder,
q: q,
page: page,
filter_orphaned: filter_orphaned,
view: view
}
)
end
{:noreply, socket}
end
def handle_info(
{PhoenixKitWeb.Components.MediaBrowser, "media-browser", {:navigate, params}},
socket
) do
folder = params[:folder]
q = params[:q] || ""
page = params[:page] || 1
filter_orphaned = params[:filter_orphaned] || false
view = params[:view]
base = Routes.path("/admin/media")
qs =
%{}
|> then(&if folder, do: Map.put(&1, "folder", folder), else: &1)
|> then(&if q != "", do: Map.put(&1, "q", q), else: &1)
|> then(&if page > 1, do: Map.put(&1, "page", page), else: &1)
|> then(&if filter_orphaned, do: Map.put(&1, "orphaned", "1"), else: &1)
|> then(&if view == "all", do: Map.put(&1, "view", "all"), else: &1)
url = if qs == %{}, do: base, else: base <> "?" <> URI.encode_query(qs)
{:noreply, push_patch(socket, to: url)}
end
end