From 82f1348bab8d4fb55fc65231b22f34e3dd7c6f78 Mon Sep 17 00:00:00 2001 From: Jacqueline McKinney Date: Thu, 16 Dec 2021 18:15:41 -0600 Subject: [PATCH 1/2] close form once form is submitted, stay on filtered category --- lib/grapevine_web/live/post_live.ex | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/grapevine_web/live/post_live.ex b/lib/grapevine_web/live/post_live.ex index 38b994a..75b03c9 100644 --- a/lib/grapevine_web/live/post_live.ex +++ b/lib/grapevine_web/live/post_live.ex @@ -33,6 +33,7 @@ defmodule GrapevineWeb.PostLive do all_categories = [%{id: 0, name: "All"} | categories] assign(socket, + category_id: "0", categories: all_categories, all_posts: posts, posts: posts, @@ -89,16 +90,20 @@ defmodule GrapevineWeb.PostLive do {:noreply, assign(socket, posts: posts, all_posts: posts)} end + @spec handle_info({:post_created, any} | {:updated_post, any}, Phoenix.LiveView.Socket.t()) :: + {:noreply, Phoenix.LiveView.Socket.t()} def handle_info({:post_created, post}, socket) do - posts = [post | socket.assigns.posts] - - {:noreply, assign(socket, posts: posts)} + posts = [post | socket.assigns.all_posts] + filtered_posts = Enum.filter(posts, &(&1.category_id == String.to_integer(socket.assigns.category_id))) + socket = assign(socket, posts: filtered_posts, all_posts: posts) + {:noreply, push_patch(socket, to: Routes.page_path(__MODULE__, :index, category_id: socket.assigns.category_id))} end def handle_info({:updated_post, post}, socket) do p_index = Enum.find_index(socket.assigns.posts, fn x -> x.id == post.id end) posts = List.replace_at(socket.assigns.posts, p_index, post) - {:noreply, assign(socket, posts: posts)} + socket = assign(socket, posts: posts) + {:noreply, push_patch(socket, to: Routes.page_path(__MODULE__, :index, category_id: socket.assigns.category_id))} end def sort_posts(posts, "inserted_at", :desc) do From 0eeaf5de27b50509cc640255c4e70225ae887f01 Mon Sep 17 00:00:00 2001 From: Jacqueline McKinney Date: Thu, 16 Dec 2021 18:16:10 -0600 Subject: [PATCH 2/2] formatting --- lib/grapevine_web/live/post_live.ex | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/grapevine_web/live/post_live.ex b/lib/grapevine_web/live/post_live.ex index 75b03c9..2f4102f 100644 --- a/lib/grapevine_web/live/post_live.ex +++ b/lib/grapevine_web/live/post_live.ex @@ -94,16 +94,27 @@ defmodule GrapevineWeb.PostLive do {:noreply, Phoenix.LiveView.Socket.t()} def handle_info({:post_created, post}, socket) do posts = [post | socket.assigns.all_posts] - filtered_posts = Enum.filter(posts, &(&1.category_id == String.to_integer(socket.assigns.category_id))) + + filtered_posts = + Enum.filter(posts, &(&1.category_id == String.to_integer(socket.assigns.category_id))) + socket = assign(socket, posts: filtered_posts, all_posts: posts) - {:noreply, push_patch(socket, to: Routes.page_path(__MODULE__, :index, category_id: socket.assigns.category_id))} + + {:noreply, + push_patch(socket, + to: Routes.page_path(__MODULE__, :index, category_id: socket.assigns.category_id) + )} end def handle_info({:updated_post, post}, socket) do p_index = Enum.find_index(socket.assigns.posts, fn x -> x.id == post.id end) posts = List.replace_at(socket.assigns.posts, p_index, post) socket = assign(socket, posts: posts) - {:noreply, push_patch(socket, to: Routes.page_path(__MODULE__, :index, category_id: socket.assigns.category_id))} + + {:noreply, + push_patch(socket, + to: Routes.page_path(__MODULE__, :index, category_id: socket.assigns.category_id) + )} end def sort_posts(posts, "inserted_at", :desc) do