poex/lib/poex_web/channels/pad_channel.ex

29 lines
686 B
Elixir

defmodule PoexWeb.PadChannel do
use Phoenix.Channel
alias Poex.Pads.DocumentServer
@moduledoc """
Channel for users of pad documents
"""
def join("pad:lobby", _message, socket) do
{:ok, socket}
end
def join("pad:" <> document_id, _params, socket) do
contents = DocumentServer.get_contents(document_id)
{:ok, %{uuid: socket.assigns.uuid, contents: contents},
assign(socket, :document_id, document_id)}
end
def handle_in("update", %{"change" => change, "client_id" => client_id}, socket) do
DocumentServer.update(socket.assigns.document_id, %{
"change" => change,
"client_id" => client_id
})
{:noreply, socket}
end
end