+ <%= unless @name do %>
+
+ <% else %>
+
+ <% end %>
+
"""
end
def mount(_params, _session, socket) do
ExampleWeb.Endpoint.subscribe(@topic)
- {:ok, assign(socket, messages: [])}
+ {:ok, assign(socket, messages: [], name: nil)}
end
- def handle_event("send_message", event, socket) do
- ExampleWeb.Endpoint.broadcast(@topic, @event_new_message, event)
+ def handle_event("set_name", %{"name" => ""}, socket), do: {:noreply, socket}
+ def handle_event("set_name", %{"name" => name}, socket), do: {:noreply, assign(socket, name: name)}
+
+ def handle_event("send_message", payload, socket) do
+ payload =
+ payload
+ |> Map.put(:name, socket.assigns.name)
+ |> Map.put(:id, System.unique_integer([:positive]))
+
+ ExampleWeb.Endpoint.broadcast(@topic, @event_new_message, payload)
+
{:noreply, socket}
end
def handle_info(%{topic: @topic, event: @event_new_message, payload: payload}, socket) do
- payload = Map.put(payload, :id, System.unique_integer([:positive]))
{:noreply, assign(socket, messages: socket.assigns.messages ++ [payload])}
end
end