@@ -226,7 +226,7 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
|
|||||||
|
|
||||||
defp apply_action(socket, :index, params) do
|
defp apply_action(socket, :index, params) do
|
||||||
query = params["query"] || ""
|
query = params["query"] || ""
|
||||||
order = parse_order(params["order"] || "purchase")
|
order = parse_order(params["order"] || "purchase", [:purchase, :alphabetical, :release])
|
||||||
total_records = Collection.search_records_count(query)
|
total_records = Collection.search_records_count(query)
|
||||||
|
|
||||||
record_list_params =
|
record_list_params =
|
||||||
@@ -293,9 +293,6 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
|
|||||||
|> load_and_assign_records(socket.assigns.record_list_params)}
|
|> load_and_assign_records(socket.assigns.record_list_params)}
|
||||||
end
|
end
|
||||||
|
|
||||||
defp parse_mode("grid"), do: :grid
|
|
||||||
defp parse_mode("list"), do: :list
|
|
||||||
|
|
||||||
defp load_and_assign_records(socket, record_list_params) do
|
defp load_and_assign_records(socket, 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)
|
||||||
|
|
||||||
@@ -315,10 +312,6 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
|
|||||||
|> stream(:records, records, reset: true)
|
|> stream(:records, records, reset: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
defp parse_order("alphabetical"), do: :alphabetical
|
|
||||||
defp parse_order("purchase"), do: :purchase
|
|
||||||
defp parse_order("release"), do: :release
|
|
||||||
|
|
||||||
defp order_path(record_list_params, order) do
|
defp order_path(record_list_params, order) do
|
||||||
qs =
|
qs =
|
||||||
record_list_params
|
record_list_params
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ defmodule MusicLibraryWeb.WishlistLive.Index do
|
|||||||
|
|
||||||
defp apply_action(socket, :index, params) do
|
defp apply_action(socket, :index, params) do
|
||||||
query = params["query"] || ""
|
query = params["query"] || ""
|
||||||
order = parse_order(params["order"] || "insertion")
|
order = parse_order(params["order"] || "insertion", [:insertion, :alphabetical, :release])
|
||||||
total_records = Wishlist.search_records_count(query)
|
total_records = Wishlist.search_records_count(query)
|
||||||
|
|
||||||
record_list_params =
|
record_list_params =
|
||||||
@@ -278,9 +278,6 @@ defmodule MusicLibraryWeb.WishlistLive.Index do
|
|||||||
|> load_and_assign_records(socket.assigns.record_list_params)}
|
|> load_and_assign_records(socket.assigns.record_list_params)}
|
||||||
end
|
end
|
||||||
|
|
||||||
defp parse_mode("grid"), do: :grid
|
|
||||||
defp parse_mode("list"), do: :list
|
|
||||||
|
|
||||||
defp load_and_assign_records(socket, record_list_params) do
|
defp load_and_assign_records(socket, 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)
|
||||||
|
|
||||||
@@ -298,10 +295,6 @@ defmodule MusicLibraryWeb.WishlistLive.Index do
|
|||||||
|> stream(:records, records, reset: true)
|
|> stream(:records, records, reset: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
defp parse_order("alphabetical"), do: :alphabetical
|
|
||||||
defp parse_order("insertion"), do: :insertion
|
|
||||||
defp parse_order("release"), do: :release
|
|
||||||
|
|
||||||
defp order_path(record_list_params, order) do
|
defp order_path(record_list_params, order) do
|
||||||
qs =
|
qs =
|
||||||
record_list_params
|
record_list_params
|
||||||
|
|||||||
@@ -55,6 +55,17 @@ defmodule MusicLibraryWeb.LiveHelpers.Params do
|
|||||||
Map.put(params, :order, order)
|
Map.put(params, :order, order)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@spec parse_mode(String.t()) :: :grid | :list
|
||||||
|
def parse_mode("grid"), do: :grid
|
||||||
|
def parse_mode("list"), do: :list
|
||||||
|
|
||||||
|
@spec parse_order(String.t(), [atom(), ...]) :: atom()
|
||||||
|
def parse_order(order, [_ | _] = allowed) when is_binary(order) do
|
||||||
|
Enum.find(allowed, hd(allowed), fn a -> Atom.to_string(a) == order end)
|
||||||
|
end
|
||||||
|
|
||||||
|
def parse_order(_, []), do: raise(ArgumentError, "allowed orders must not be empty")
|
||||||
|
|
||||||
@spec apply_fallback_index(Phoenix.LiveView.Socket.t(), map(), atom(), function()) ::
|
@spec apply_fallback_index(Phoenix.LiveView.Socket.t(), map(), atom(), function()) ::
|
||||||
Phoenix.LiveView.Socket.t()
|
Phoenix.LiveView.Socket.t()
|
||||||
def apply_fallback_index(socket, params, stream_key, apply_action_fn) do
|
def apply_fallback_index(socket, params, stream_key, apply_action_fn) do
|
||||||
|
|||||||
Reference in New Issue
Block a user