Improve list view and add cookie
This commit is contained in:
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user