d031961a84
ZZZZZZZZZ
29 lines
1 KiB
Elixir
29 lines
1 KiB
Elixir
defmodule Proxichat.MetaChannel do
|
|
use Phoenix.Channel
|
|
alias Phoenix.Token
|
|
|
|
alias Proxichat.Endpoint
|
|
alias Proxichat.ChannelAuthenticator
|
|
alias Proxichat.NetworkUtils
|
|
|
|
def join("meta:lobby", %{"lat" => lat, "lon" => lon}, socket) do
|
|
id = ChannelAuthenticator.create_user
|
|
network = NetworkUtils.get_network lat, lon
|
|
Endpoint.broadcast! "networks:#{network}", "here_i_am", %{user_id: id, lat: lat, lon: lon}
|
|
{:ok, %{user_id: id, goto: network}, socket}
|
|
end
|
|
|
|
def join("meta:" <> user_id, message, socket) do
|
|
case Token.verify socket, "user", message.token do
|
|
{:ok, ^user_id} -> {:ok, %{msg: "yo"}, socket}
|
|
_ -> {:error, %{reason: "NOOOOOOOO"}}
|
|
end
|
|
end
|
|
|
|
def handle_in("new_loc", %{"body" => %{"lat" => lat, "lon" => lon}, "user_id" => id}, socket) do
|
|
new_network = NetworkUtils.get_network lat, lon
|
|
Endpoint.broadcast! "networks:#{new_network}", "here_i_am", %{user_id: id, lat: lat, lon: lon}
|
|
push socket, "goto", %{goto: new_network}
|
|
{:noreply, socket}
|
|
end
|
|
end
|