feat(chat): add events to validate/save chat in live view
This commit is contained in:
parent
a0d23e5672
commit
2064ea8fb6
@ -19,7 +19,7 @@ defmodule SlaxWeb.ChatRoomLive.Edit do
|
|||||||
</.link>
|
</.link>
|
||||||
</:actions>
|
</:actions>
|
||||||
</.header>
|
</.header>
|
||||||
<.simple_form for={@form} id="room-form">
|
<.simple_form for={@form} id="room-form" phx-change="validate-room" phx-submit="save-room">
|
||||||
<.input field={@form[:name]} type="text" label="Name" />
|
<.input field={@form[:name]} type="text" label="Name" />
|
||||||
<.input field={@form[:topic]} type="text" label="Topic" />
|
<.input field={@form[:topic]} type="text" label="Topic" />
|
||||||
<:actions>
|
<:actions>
|
||||||
@ -43,6 +43,32 @@ defmodule SlaxWeb.ChatRoomLive.Edit do
|
|||||||
{:ok, socket}
|
{:ok, socket}
|
||||||
end
|
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}")
|
||||||
|
|
||||||
|
{:error, changeset} ->
|
||||||
|
assign_form(socket, changeset)
|
||||||
|
end
|
||||||
|
|
||||||
|
{:noreply, socket}
|
||||||
|
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)}
|
||||||
|
end
|
||||||
|
|
||||||
defp assign_form(socket, %Ecto.Changeset{} = changeset) do
|
defp assign_form(socket, %Ecto.Changeset{} = changeset) do
|
||||||
assign(socket, :form, to_form(changeset))
|
assign(socket, :form, to_form(changeset))
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user