feat(chat): simplify socket response

Add helper methods to create the tuples `{:ok, socket}` and
`{:noreply, socket}`, and make them available in `SlaxWeb` module.
This commit is contained in:
2025-02-05 00:05:49 +00:00
parent 2063870a9e
commit 489be57db7
5 changed files with 72 additions and 64 deletions

View File

@@ -43,33 +43,32 @@ defmodule SlaxWeb.ChatRoomLive.Edit do
|> push_navigate(to: ~p"/")
end
{:ok, socket}
ok(socket)
end
@impl Phoenix.LiveView
def handle_event("save-room", %{"room" => room_params}, socket) do
socket =
case Chat.update_room(socket.assigns.room, room_params) do
{:ok, room} ->
socket
|> put_flash(:info, "Room #{room.name} updated succesfully")
|> push_navigate(to: ~p"/rooms/#{room}")
socket.assigns.room
|> Chat.update_room(room_params)
|> case do
{:ok, room} ->
socket
|> put_flash(:info, "Room #{room.name} updated succesfully")
|> push_navigate(to: ~p"/rooms/#{room}")
{:error, changeset} ->
assign_form(socket, changeset)
end
{:noreply, socket}
{:error, changeset} ->
assign_form(socket, changeset)
end
|> noreply()
end
@impl Phoenix.LiveView
def handle_event("validate-room", %{"room" => room_params}, socket) do
changeset =
socket.assigns.room
|> Chat.change_room(room_params)
|> Map.put(:action, :validate)
{:noreply, assign_form(socket, changeset)}
socket.assigns.room
|> Chat.change_room(room_params)
|> Map.put(:action, :validate)
|> then(&assign_form(socket, &1))
|> noreply()
end
defp assign_form(socket, %Ecto.Changeset{} = changeset) do

View File

@@ -62,13 +62,11 @@ defmodule SlaxWeb.ChatRoomLive.Index do
def mount(_params, _session, socket) do
rooms = Chat.list_rooms_with_joined(socket.assigns.current_user)
socket =
socket
|> assign(page_title: "All rooms")
|> stream_configure(:rooms, dom_id: fn {room, _joined?} -> "rooms-#{room.id}" end)
|> stream(:rooms, rooms)
{:ok, socket}
socket
|> assign(page_title: "All rooms")
|> stream_configure(:rooms, dom_id: fn {room, _joined?} -> "rooms-#{room.id}" end)
|> stream(:rooms, rooms)
|> ok()
end
@impl Phoenix.LiveView
@@ -78,7 +76,9 @@ defmodule SlaxWeb.ChatRoomLive.Index do
|> Chat.get_room!()
|> Chat.toggle_room_membership(socket.assigns.current_user)
{:noreply, stream_insert(socket, :rooms, {room, joined?})}
socket
|> stream_insert(:rooms, {room, joined?})
|> noreply()
end
defp open_room(room) do