diff --git a/lib/music_library_web/live/collection_live/index.ex b/lib/music_library_web/live/collection_live/index.ex index ffeed660..1b4d96c1 100644 --- a/lib/music_library_web/live/collection_live/index.ex +++ b/lib/music_library_web/live/collection_live/index.ex @@ -202,14 +202,14 @@ defmodule MusicLibraryWeb.CollectionLive.Index do defp apply_action(socket, :import, params) do socket - |> apply_fallback_index(params) + |> apply_fallback_index(params, :records, &apply_action/3) |> assign(:page_title, gettext("Add new Record · Collection")) |> assign(:record, nil) end defp apply_action(socket, :barcode_scan, params) do socket - |> apply_fallback_index(params) + |> apply_fallback_index(params, :records, &apply_action/3) |> assign(:page_title, gettext("Scan barcodes · Collection")) |> assign(:record, nil) end @@ -218,7 +218,7 @@ defmodule MusicLibraryWeb.CollectionLive.Index do record = Records.get_record!(id) socket - |> apply_fallback_index(params) + |> apply_fallback_index(params, :records, &apply_action/3) |> assign(:page_title, Show.page_title(socket.assigns.live_action, record)) |> assign(:record, record) end @@ -237,15 +237,6 @@ 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.Components.RecordForm, {:saved, _record}}, socket) do {:noreply, load_and_assign_records(socket, socket.assigns.record_list_params)} diff --git a/lib/music_library_web/live/record_set_live/index.ex b/lib/music_library_web/live/record_set_live/index.ex index 92cd9d7f..7275310f 100644 --- a/lib/music_library_web/live/record_set_live/index.ex +++ b/lib/music_library_web/live/record_set_live/index.ex @@ -306,21 +306,21 @@ defmodule MusicLibraryWeb.RecordSetLive.Index do defp apply_action(socket, :edit, %{"id" => id} = params) do socket - |> apply_fallback_index(params) + |> apply_fallback_index(params, :record_sets, &apply_action/3) |> assign(:page_title, gettext("Edit Set")) |> assign(:record_set, RecordSets.get_record_set!(id)) end defp apply_action(socket, :new, params) do socket - |> apply_fallback_index(params) + |> apply_fallback_index(params, :record_sets, &apply_action/3) |> assign(:page_title, gettext("New Set")) |> assign(:record_set, %RecordSet{}) end defp apply_action(socket, :add_record, %{"id" => id} = params) do socket - |> apply_fallback_index(params) + |> apply_fallback_index(params, :record_sets, &apply_action/3) |> assign(:page_title, gettext("Add Record")) |> assign(:record_set, RecordSets.get_record_set!(id)) end @@ -339,15 +339,6 @@ defmodule MusicLibraryWeb.RecordSetLive.Index do load_and_assign_sets(socket, list_params) end - defp apply_fallback_index(socket, params) do - if get_in(socket.assigns, [:streams, :record_sets]) == nil do - socket - |> apply_action(:index, params) - else - socket - end - end - defp load_and_assign_sets(socket, list_params) do offset = page_to_offset(list_params.page, list_params.page_size) diff --git a/lib/music_library_web/live/scrobble_rules_live/index.ex b/lib/music_library_web/live/scrobble_rules_live/index.ex index 348a69e9..64615497 100644 --- a/lib/music_library_web/live/scrobble_rules_live/index.ex +++ b/lib/music_library_web/live/scrobble_rules_live/index.ex @@ -163,14 +163,14 @@ defmodule MusicLibraryWeb.ScrobbleRulesLive.Index do defp apply_action(socket, :edit, %{"id" => id} = params) do socket - |> apply_fallback_index(params) + |> apply_fallback_index(params, :scrobble_rules, &apply_action/3) |> assign(:page_title, gettext("Edit Scrobble Rule")) |> assign(:scrobble_rule, ScrobbleRules.get_scrobble_rule!(id)) end defp apply_action(socket, :new, params) do socket - |> apply_fallback_index(params) + |> apply_fallback_index(params, :scrobble_rules, &apply_action/3) |> assign(:page_title, gettext("New Scrobble Rule")) |> assign(:scrobble_rule, %ScrobbleRule{}) end @@ -185,15 +185,6 @@ defmodule MusicLibraryWeb.ScrobbleRulesLive.Index do load_and_assign_rules(socket, list_params) end - def apply_fallback_index(socket, params) do - if get_in(socket.assigns, [:streams, :scrobble_rules]) == nil do - socket - |> apply_action(:index, params) - else - socket - end - end - defp load_and_assign_rules(socket, list_params) do offset = page_to_offset(list_params.page, list_params.page_size) diff --git a/lib/music_library_web/live/scrobbled_tracks_live/index.ex b/lib/music_library_web/live/scrobbled_tracks_live/index.ex index 5b5555a8..f5755350 100644 --- a/lib/music_library_web/live/scrobbled_tracks_live/index.ex +++ b/lib/music_library_web/live/scrobbled_tracks_live/index.ex @@ -232,7 +232,7 @@ defmodule MusicLibraryWeb.ScrobbledTracksLive.Index do track = ScrobbleActivity.get_track!(id) socket - |> apply_fallback_index(params) + |> apply_fallback_index(params, :tracks, &apply_action/3) |> assign(:page_title, gettext("Edit Track")) |> assign(:track, track) |> assign(:form, to_form(Track.changeset(track, %{}))) @@ -252,15 +252,6 @@ defmodule MusicLibraryWeb.ScrobbledTracksLive.Index do load_and_assign_tracks(socket, track_list_params) end - def apply_fallback_index(socket, params) do - if get_in(socket.assigns, [:streams, :tracks]) == nil do - socket - |> apply_action(:index, params) - else - socket - end - end - @impl true def handle_info({MusicLibraryWeb.ScrobbledTracksLive.Form, {:saved, _track}}, socket) do {:noreply, load_and_assign_tracks(socket, socket.assigns.track_list_params)} diff --git a/lib/music_library_web/live/wishlist_live/index.ex b/lib/music_library_web/live/wishlist_live/index.ex index f342bffd..01006709 100644 --- a/lib/music_library_web/live/wishlist_live/index.ex +++ b/lib/music_library_web/live/wishlist_live/index.ex @@ -179,7 +179,7 @@ defmodule MusicLibraryWeb.WishlistLive.Index do import_query = params["import_query"] || "" socket - |> apply_fallback_index(params) + |> apply_fallback_index(params, :records, &apply_action/3) |> assign(:page_title, gettext("Add new Record · Wishlist")) |> assign(:import_query, import_query) |> assign(:record, nil) @@ -189,7 +189,7 @@ defmodule MusicLibraryWeb.WishlistLive.Index do record = Records.get_record!(id) socket - |> apply_fallback_index(params) + |> apply_fallback_index(params, :records, &apply_action/3) |> assign(:page_title, Show.page_title(socket.assigns.live_action, record)) |> assign(:record, record) end @@ -208,15 +208,6 @@ 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.Components.RecordForm, {:saved, _record}}, socket) do {:noreply, load_and_assign_records(socket, socket.assigns.record_list_params)} diff --git a/lib/music_library_web/live_helpers/params.ex b/lib/music_library_web/live_helpers/params.ex index 36b99748..f19085ef 100644 --- a/lib/music_library_web/live_helpers/params.ex +++ b/lib/music_library_web/live_helpers/params.ex @@ -46,4 +46,12 @@ defmodule MusicLibraryWeb.LiveHelpers.Params do def merge_order(params, order) do Map.put(params, :order, order) end + + def apply_fallback_index(socket, params, stream_key, apply_action_fn) do + if get_in(socket.assigns, [:streams, stream_key]) == nil do + apply_action_fn.(socket, :index, params) + else + socket + end + end end