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
phoenix_kit lib phoenix_kit_web live users media.ex
Raw

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