From 14617077c7e348a3caa9f03224e7558beb680068 Mon Sep 17 00:00:00 2001 From: Melonai Date: Thu, 13 May 2021 02:15:50 +0200 Subject: Manage shares through seperate unique process --- lib/rook_web/channels/share_channel.ex | 21 +++++++++++++++++---- lib/rook_web/channels/user_socket.ex | 2 +- 2 files changed, 18 insertions(+), 5 deletions(-) (limited to 'lib/rook_web/channels') 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 diff --git a/lib/rook_web/channels/user_socket.ex b/lib/rook_web/channels/user_socket.ex index a036c4a..ae82b6b 100644 --- a/lib/rook_web/channels/user_socket.ex +++ b/lib/rook_web/channels/user_socket.ex @@ -18,7 +18,7 @@ defmodule RookWeb.UserSocket do # performing token verification on connect. @impl true def connect(_params, socket, _connect_info) do - token = Rook.Utils.Token.token() + token = Rook.Token.token() {:ok, assign(socket, :token, token)} end -- cgit 1.4.1