Move record leading into handle_params
Loading records in mount/3 proved to be useless, and only caused more load for nothing. Moving it in handle_params made the app faster, at the expense of complicating a couple of other actions (edit and import) which needed to be extended to concern themselves about records.
This commit is contained in:
@@ -11,18 +11,7 @@ defmodule MusicLibraryWeb.RecordLive.Index do
|
|||||||
}
|
}
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def mount(params, _session, socket) do
|
def mount(_params, _session, socket) do
|
||||||
query = params["query"] || ""
|
|
||||||
total_records = Records.search_records_count(query)
|
|
||||||
|
|
||||||
record_list_params =
|
|
||||||
@default_records_list_params
|
|
||||||
|> merge_query(params["query"])
|
|
||||||
|> merge_pagination(params, total_records)
|
|
||||||
|
|
||||||
offset = page_to_offset(record_list_params.page, record_list_params.page_size)
|
|
||||||
records = Records.search_records(query, limit: record_list_params.page_size, offset: offset)
|
|
||||||
|
|
||||||
socket =
|
socket =
|
||||||
if static_changed?(socket) do
|
if static_changed?(socket) do
|
||||||
put_flash(socket, :warning, "The application has been updated, please reload.")
|
put_flash(socket, :warning, "The application has been updated, please reload.")
|
||||||
@@ -30,11 +19,7 @@ defmodule MusicLibraryWeb.RecordLive.Index do
|
|||||||
socket
|
socket
|
||||||
end
|
end
|
||||||
|
|
||||||
{:ok,
|
{:ok, assign(socket, :nav_section, :records)}
|
||||||
socket
|
|
||||||
|> assign(:nav_section, :records)
|
|
||||||
|> assign(:record_list_params, record_list_params)
|
|
||||||
|> stream(:records, records)}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
@@ -42,42 +27,51 @@ defmodule MusicLibraryWeb.RecordLive.Index do
|
|||||||
{:noreply, apply_action(socket, socket.assigns.live_action, params)}
|
{:noreply, apply_action(socket, socket.assigns.live_action, params)}
|
||||||
end
|
end
|
||||||
|
|
||||||
defp apply_action(socket, :import, _params) do
|
defp apply_action(socket, :import, params) do
|
||||||
|
socket =
|
||||||
|
if get_in(socket.assigns, [:streams, :records]) == nil do
|
||||||
|
socket
|
||||||
|
|> apply_action(:index, params)
|
||||||
|
else
|
||||||
|
socket
|
||||||
|
end
|
||||||
|
|
||||||
socket
|
socket
|
||||||
|> assign(:page_title, "Import from MusicBrainz")
|
|> assign(:page_title, "Import from MusicBrainz")
|
||||||
|> assign(:record, nil)
|
|> assign(:record, nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
defp apply_action(socket, :edit, %{"id" => id}) do
|
defp apply_action(socket, :edit, params = %{"id" => id}) do
|
||||||
|
socket =
|
||||||
|
if get_in(socket.assigns, [:streams, :records]) == nil do
|
||||||
|
socket
|
||||||
|
|> apply_action(:index, params)
|
||||||
|
else
|
||||||
|
socket
|
||||||
|
end
|
||||||
|
|
||||||
socket
|
socket
|
||||||
|> assign(:page_title, "Edit Metadata")
|
|> assign(:page_title, "Edit Metadata")
|
||||||
|> assign(:record, Records.get_record!(id))
|
|> assign(:record, Records.get_record!(id))
|
||||||
end
|
end
|
||||||
|
|
||||||
defp apply_action(socket, :index, params) do
|
defp apply_action(socket, :index, params) do
|
||||||
new_socket =
|
query = params["query"] || ""
|
||||||
socket
|
|
||||||
|> assign(:page_title, "Collection")
|
|
||||||
|> assign(:record, nil)
|
|
||||||
|
|
||||||
query = params["query"] || socket.assigns.record_list_params.query
|
|
||||||
total_records = Records.search_records_count(query)
|
total_records = Records.search_records_count(query)
|
||||||
|
|
||||||
record_list_params =
|
record_list_params =
|
||||||
@default_records_list_params
|
@default_records_list_params
|
||||||
|> merge_query(params["query"])
|
|> merge_query(query)
|
||||||
|> merge_pagination(params, total_records)
|
|> merge_pagination(params, total_records)
|
||||||
|
|
||||||
if record_list_params != socket.assigns.record_list_params do
|
offset = page_to_offset(record_list_params.page, record_list_params.page_size)
|
||||||
offset = page_to_offset(record_list_params.page, record_list_params.page_size)
|
records = Records.search_records(query, limit: record_list_params.page_size, offset: offset)
|
||||||
records = Records.search_records(query, limit: record_list_params.page_size, offset: offset)
|
|
||||||
|
|
||||||
new_socket
|
socket
|
||||||
|> assign(:record_list_params, record_list_params)
|
|> assign(:page_title, "Collection")
|
||||||
|> stream(:records, records, reset: true)
|
|> assign(:record, nil)
|
||||||
else
|
|> assign(:record_list_params, record_list_params)
|
||||||
new_socket
|
|> stream(:records, records, reset: true)
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
|
|||||||
Reference in New Issue
Block a user