diff options
Diffstat (limited to 'lib/rook_web/channels/share_channel.ex')
| -rw-r--r-- | lib/rook_web/channels/share_channel.ex | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/lib/rook_web/channels/share_channel.ex b/lib/rook_web/channels/share_channel.ex index 7454986..2d99d87 100644 --- a/lib/rook_web/channels/share_channel.ex +++ b/lib/rook_web/channels/share_channel.ex @@ -1,16 +1,29 @@ defmodule RookWeb.ShareChannel do use Phoenix.Channel + intercept ["new_request"] + def join("share:" <> token, _params, socket) do - if token == socket.assigns[:token] do - :ok = Rook.ShareMonitor.track(self(), token) + if Rook.Token.match?(token, socket) do + Rook.Share.start(token) {:ok, socket} else {:error, %{reason: "Wrong token."}} end end - def handle_close(_requests) do - # Notify all requests that share is gone. + def handle_in("accept_request", %{"request" => _request_token}, socket) do + # TODO: Send request accept message. + {:noreply, socket} + end + + def handle_in("accept_request", _params, _socket) do + {:error, %{reason: "No request given to accept."}} + end + + def handle_out("new_request", msg, socket) do + # TODO: Send ACK + push(socket, "new_request", msg) + {:noreply, socket} end end |
