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:
parent
2063870a9e
commit
489be57db7
@ -55,6 +55,8 @@ defmodule SlaxWeb do
|
|||||||
use Phoenix.LiveView,
|
use Phoenix.LiveView,
|
||||||
layout: {SlaxWeb.Layouts, :app}
|
layout: {SlaxWeb.Layouts, :app}
|
||||||
|
|
||||||
|
import SlaxWeb.SocketHelpers, only: [ok: 1, noreply: 1]
|
||||||
|
|
||||||
unquote(html_helpers())
|
unquote(html_helpers())
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -237,7 +237,6 @@ defmodule SlaxWeb.ChatRoomLive do
|
|||||||
|
|
||||||
Enum.each(rooms, &Chat.subscribe_to_room/1)
|
Enum.each(rooms, &Chat.subscribe_to_room/1)
|
||||||
|
|
||||||
socket =
|
|
||||||
socket
|
socket
|
||||||
|> assign(
|
|> assign(
|
||||||
hide_topic?: false,
|
hide_topic?: false,
|
||||||
@ -253,8 +252,7 @@ defmodule SlaxWeb.ChatRoomLive do
|
|||||||
:unread_marker -> "messages-unread-marker"
|
:unread_marker -> "messages-unread-marker"
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
|> ok()
|
||||||
{:ok, socket}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@impl Phoenix.LiveView
|
@impl Phoenix.LiveView
|
||||||
@ -274,7 +272,6 @@ defmodule SlaxWeb.ChatRoomLive do
|
|||||||
|
|
||||||
Chat.update_last_read_id(room, socket.assigns.current_user)
|
Chat.update_last_read_id(room, socket.assigns.current_user)
|
||||||
|
|
||||||
{:noreply,
|
|
||||||
socket
|
socket
|
||||||
|> assign(
|
|> assign(
|
||||||
hide_topic?: false,
|
hide_topic?: false,
|
||||||
@ -295,7 +292,8 @@ defmodule SlaxWeb.ChatRoomLive do
|
|||||||
other_room ->
|
other_room ->
|
||||||
other_room
|
other_room
|
||||||
end)
|
end)
|
||||||
end)}
|
end)
|
||||||
|
|> noreply()
|
||||||
end
|
end
|
||||||
|
|
||||||
@impl Phoenix.LiveView
|
@impl Phoenix.LiveView
|
||||||
|
@ -43,13 +43,14 @@ defmodule SlaxWeb.ChatRoomLive.Edit do
|
|||||||
|> push_navigate(to: ~p"/")
|
|> push_navigate(to: ~p"/")
|
||||||
end
|
end
|
||||||
|
|
||||||
{:ok, socket}
|
ok(socket)
|
||||||
end
|
end
|
||||||
|
|
||||||
@impl Phoenix.LiveView
|
@impl Phoenix.LiveView
|
||||||
def handle_event("save-room", %{"room" => room_params}, socket) do
|
def handle_event("save-room", %{"room" => room_params}, socket) do
|
||||||
socket =
|
socket.assigns.room
|
||||||
case Chat.update_room(socket.assigns.room, room_params) do
|
|> Chat.update_room(room_params)
|
||||||
|
|> case do
|
||||||
{:ok, room} ->
|
{:ok, room} ->
|
||||||
socket
|
socket
|
||||||
|> put_flash(:info, "Room #{room.name} updated succesfully")
|
|> put_flash(:info, "Room #{room.name} updated succesfully")
|
||||||
@ -58,18 +59,16 @@ defmodule SlaxWeb.ChatRoomLive.Edit do
|
|||||||
{:error, changeset} ->
|
{:error, changeset} ->
|
||||||
assign_form(socket, changeset)
|
assign_form(socket, changeset)
|
||||||
end
|
end
|
||||||
|
|> noreply()
|
||||||
{:noreply, socket}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@impl Phoenix.LiveView
|
@impl Phoenix.LiveView
|
||||||
def handle_event("validate-room", %{"room" => room_params}, socket) do
|
def handle_event("validate-room", %{"room" => room_params}, socket) do
|
||||||
changeset =
|
|
||||||
socket.assigns.room
|
socket.assigns.room
|
||||||
|> Chat.change_room(room_params)
|
|> Chat.change_room(room_params)
|
||||||
|> Map.put(:action, :validate)
|
|> Map.put(:action, :validate)
|
||||||
|
|> then(&assign_form(socket, &1))
|
||||||
{:noreply, assign_form(socket, changeset)}
|
|> noreply()
|
||||||
end
|
end
|
||||||
|
|
||||||
defp assign_form(socket, %Ecto.Changeset{} = changeset) do
|
defp assign_form(socket, %Ecto.Changeset{} = changeset) do
|
||||||
|
@ -62,13 +62,11 @@ defmodule SlaxWeb.ChatRoomLive.Index do
|
|||||||
def mount(_params, _session, socket) do
|
def mount(_params, _session, socket) do
|
||||||
rooms = Chat.list_rooms_with_joined(socket.assigns.current_user)
|
rooms = Chat.list_rooms_with_joined(socket.assigns.current_user)
|
||||||
|
|
||||||
socket =
|
|
||||||
socket
|
socket
|
||||||
|> assign(page_title: "All rooms")
|
|> assign(page_title: "All rooms")
|
||||||
|> stream_configure(:rooms, dom_id: fn {room, _joined?} -> "rooms-#{room.id}" end)
|
|> stream_configure(:rooms, dom_id: fn {room, _joined?} -> "rooms-#{room.id}" end)
|
||||||
|> stream(:rooms, rooms)
|
|> stream(:rooms, rooms)
|
||||||
|
|> ok()
|
||||||
{:ok, socket}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@impl Phoenix.LiveView
|
@impl Phoenix.LiveView
|
||||||
@ -78,7 +76,9 @@ defmodule SlaxWeb.ChatRoomLive.Index do
|
|||||||
|> Chat.get_room!()
|
|> Chat.get_room!()
|
||||||
|> Chat.toggle_room_membership(socket.assigns.current_user)
|
|> Chat.toggle_room_membership(socket.assigns.current_user)
|
||||||
|
|
||||||
{:noreply, stream_insert(socket, :rooms, {room, joined?})}
|
socket
|
||||||
|
|> stream_insert(:rooms, {room, joined?})
|
||||||
|
|> noreply()
|
||||||
end
|
end
|
||||||
|
|
||||||
defp open_room(room) do
|
defp open_room(room) do
|
||||||
|
9
lib/slax_web/live/socket_helpers.ex
Normal file
9
lib/slax_web/live/socket_helpers.ex
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
defmodule SlaxWeb.SocketHelpers do
|
||||||
|
@moduledoc """
|
||||||
|
Helper functions to encapsulate a socket into proper tuples.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def ok(socket), do: {:ok, socket}
|
||||||
|
|
||||||
|
def noreply(socket), do: {:noreply, socket}
|
||||||
|
end
|
Loading…
x
Reference in New Issue
Block a user