Dry up Wishlist and Collection indexes by using a fallback index function

This commit is contained in:
Claudio Ortolina
2025-05-13 19:54:29 +01:00
parent 8e48b532e9
commit 659e53e1ee
2 changed files with 23 additions and 40 deletions
@@ -33,45 +33,24 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
end
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
|> apply_fallback_index(params)
|> assign(:page_title, gettext("Add new Record · Collection"))
|> assign(:record, nil)
end
defp apply_action(socket, :barcode_scan, params) do
socket =
if get_in(socket.assigns, [:streams, :records]) == nil do
socket
|> apply_action(:index, params)
else
socket
end
socket
|> apply_fallback_index(params)
|> assign(:page_title, gettext("Scan barcodes · Collection"))
|> assign(:record, nil)
end
defp apply_action(socket, :edit, %{"id" => id} = params) do
socket =
if get_in(socket.assigns, [:streams, :records]) == nil do
socket
|> apply_action(:index, params)
else
socket
end
record = Records.get_record!(id)
socket
|> apply_fallback_index(params)
|> assign(:page_title, Show.page_title(socket.assigns.live_action, record))
|> assign(:record, record)
end
@@ -90,6 +69,15 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
load_and_assign_records(socket, record_list_params)
end
def apply_fallback_index(socket, params) do
if get_in(socket.assigns, [:streams, :records]) == nil do
socket
|> apply_action(:index, params)
else
socket
end
end
@impl true
def handle_info({MusicLibraryWeb.FormComponent, {:saved, _record}}, socket) do
{:noreply, load_and_assign_records(socket, socket.assigns.record_list_params)}
@@ -37,31 +37,17 @@ defmodule MusicLibraryWeb.WishlistLive.Index do
end
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
|> apply_fallback_index(params)
|> assign(:page_title, gettext("Add new Record · Wishlist"))
|> assign(:record, nil)
end
defp apply_action(socket, :edit, %{"id" => id} = params) do
socket =
if get_in(socket.assigns, [:streams, :records]) == nil do
socket
|> apply_action(:index, params)
else
socket
end
record = Records.get_record!(id)
socket
|> apply_fallback_index(params)
|> assign(:page_title, Show.page_title(socket.assigns.live_action, record))
|> assign(:record, record)
end
@@ -78,6 +64,15 @@ defmodule MusicLibraryWeb.WishlistLive.Index do
load_and_assign_records(socket, record_list_params)
end
def apply_fallback_index(socket, params) do
if get_in(socket.assigns, [:streams, :records]) == nil do
socket
|> apply_action(:index, params)
else
socket
end
end
@impl true
def handle_info({MusicLibraryWeb.FormComponent, {:saved, _record}}, socket) do
{:noreply, load_and_assign_records(socket, socket.assigns.record_list_params)}