Improve list view and add cookie

This commit is contained in:
2023-11-27 16:49:59 +00:00
committed by Daniel Patterson
parent e31db2f5e8
commit cb7c15c345
5 changed files with 129 additions and 59 deletions

View File

@@ -4,19 +4,19 @@ defmodule WishWeb.HomeLive.Index do
alias Wish.Wishlist
@impl true
def mount(_params, _session, socket) do
{:ok, assign(socket, :items, Wishlist.list_items()) |> assign(:display, :grid)}
def mount(_params, session, socket) do
grid? =
case Map.get(session, "user_display", "grid") do
"grid" -> true
_ -> false
end
{:ok, assign(socket, :items, Wishlist.list_items()) |> assign(:grid, grid?)}
end
@impl true
def handle_event("toggle", _, socket) do
new_state =
case socket.assigns.display do
:row -> :grid
:grid -> :row
end
{:noreply, assign(socket, :display, new_state)}
def handle_event("toggle_view_state", _, socket) do
{:noreply, assign(socket, :grid, !socket.assigns.grid)}
end
@impl true
@@ -25,7 +25,9 @@ defmodule WishWeb.HomeLive.Index do
case Wishlist.toggle_received(item) do
{:ok, updated_item} ->
{:noreply, assign(socket, :item, updated_item)}
index = Enum.find_index(socket.assigns.items, &(&1.id == updated_item.id))
updated_list = List.update_at(socket.assigns.items, index, fn _ -> updated_item end)
{:noreply, assign(socket, :items, updated_list)}
{:error, _} ->
{:noreply, socket}