summaryrefslogtreecommitdiff
path: root/lib/aggiedit_web
diff options
context:
space:
mode:
authorLogan Hunt <loganhunt@simponic.xyz>2022-04-14 13:56:10 -0600
committerLogan Hunt <loganhunt@simponic.xyz>2022-04-14 13:56:10 -0600
commitdb7c2321cd0af59f9e810e84c7d4eb83ec416458 (patch)
tree2e559978cd4c7b4585c1c36e2cf8642aac94bd2b /lib/aggiedit_web
parentcc58a376a94c28532121fca2e1ab1d0e7de11046 (diff)
downloadaggiedit-db7c2321cd0af59f9e810e84c7d4eb83ec416458.tar.gz
aggiedit-db7c2321cd0af59f9e810e84c7d4eb83ec416458.zip
Add initial channels for posts
Diffstat (limited to 'lib/aggiedit_web')
-rw-r--r--lib/aggiedit_web/channels/post_channel.ex22
-rw-r--r--lib/aggiedit_web/channels/user_socket.ex17
-rw-r--r--lib/aggiedit_web/endpoint.ex2
-rw-r--r--lib/aggiedit_web/live/post_live/index.ex1
-rw-r--r--lib/aggiedit_web/live/post_live/show.html.heex5
-rw-r--r--lib/aggiedit_web/templates/layout/root.html.heex2
6 files changed, 47 insertions, 2 deletions
diff --git a/lib/aggiedit_web/channels/post_channel.ex b/lib/aggiedit_web/channels/post_channel.ex
new file mode 100644
index 0000000..308c6de
--- /dev/null
+++ b/lib/aggiedit_web/channels/post_channel.ex
@@ -0,0 +1,22 @@
+defmodule AggieditWeb.PostChannel do
+ use AggieditWeb, :channel
+
+ alias Aggiedit.Roles
+ alias Aggiedit.Rooms
+
+ @impl true
+ def join("post:" <> post_id, _payload, socket) do
+ post = Rooms.get_post!(post_id)
+ if Roles.guard?(socket.assigns.current_user, :show, post) do
+ {:ok, socket}
+ else
+ {:error, "You do not have permission to view this post."}
+ end
+ end
+
+ @impl true
+ def handle_in("send", body, socket) do
+ broadcast!(socket, "shout", body)
+ {:reply, :ok, socket}
+ end
+end \ No newline at end of file
diff --git a/lib/aggiedit_web/channels/user_socket.ex b/lib/aggiedit_web/channels/user_socket.ex
new file mode 100644
index 0000000..b7c0124
--- /dev/null
+++ b/lib/aggiedit_web/channels/user_socket.ex
@@ -0,0 +1,17 @@
+defmodule AggieditWeb.UserSocket do
+ alias Aggiedit.Accounts
+ use Phoenix.Socket
+
+ channel "post:*", AggieditWeb.PostChannel
+
+ @impl true
+ def connect(_params, socket, %{:session => %{"user_token" => token}}) do
+ case Accounts.get_user_by_session_token(token) do
+ user=%Accounts.User{} -> {:ok, assign(socket, %{:current_user => user})}
+ _ -> {:error, "Invalid user token."}
+ end
+ end
+
+ @impl true
+ def id(_socket), do: nil
+end \ No newline at end of file
diff --git a/lib/aggiedit_web/endpoint.ex b/lib/aggiedit_web/endpoint.ex
index 95577f0..d431553 100644
--- a/lib/aggiedit_web/endpoint.ex
+++ b/lib/aggiedit_web/endpoint.ex
@@ -12,6 +12,8 @@ defmodule AggieditWeb.Endpoint do
socket "/live", Phoenix.LiveView.Socket, websocket: [connect_info: [session: @session_options]]
+ socket "/socket", AggieditWeb.UserSocket, websocket: [connect_info: [session: @session_options]], longpoll: false
+
# Serve at "/" the static files from "priv/static" directory.
#
# You should set gzip to true if you are running phx.digest
diff --git a/lib/aggiedit_web/live/post_live/index.ex b/lib/aggiedit_web/live/post_live/index.ex
index 6b2be56..59ec234 100644
--- a/lib/aggiedit_web/live/post_live/index.ex
+++ b/lib/aggiedit_web/live/post_live/index.ex
@@ -29,7 +29,6 @@ defmodule AggieditWeb.PostLive.Index do
@impl true
def handle_params(params, _url, socket) do
- IO.puts(inspect(params))
{:noreply, apply_action(socket, socket.assigns.live_action, params)}
end
diff --git a/lib/aggiedit_web/live/post_live/show.html.heex b/lib/aggiedit_web/live/post_live/show.html.heex
index ba71c75..107a3a6 100644
--- a/lib/aggiedit_web/live/post_live/show.html.heex
+++ b/lib/aggiedit_web/live/post_live/show.html.heex
@@ -30,3 +30,8 @@
<span><%= live_patch "Edit", to: Routes.post_show_path(@socket, :edit, @room, @post), class: "button" %></span> |
<span><%= live_redirect "Back", to: Routes.post_index_path(@socket, :index, @room) %></span>
+
+<script>
+ window.userSocket.connect();
+ window.RoomChat.init(window.userSocket, <%= @post.id %>)
+</script>
diff --git a/lib/aggiedit_web/templates/layout/root.html.heex b/lib/aggiedit_web/templates/layout/root.html.heex
index 3fb7d93..a164571 100644
--- a/lib/aggiedit_web/templates/layout/root.html.heex
+++ b/lib/aggiedit_web/templates/layout/root.html.heex
@@ -7,7 +7,7 @@
<%= csrf_meta_tag() %>
<%= live_title_tag assigns[:page_title] || "Aggiedit" %>
<link phx-track-static rel="stylesheet" href={Routes.static_path(@conn, "/assets/app.css")}/>
- <script defer phx-track-static type="text/javascript" src={Routes.static_path(@conn, "/assets/app.js")}></script>
+ <script phx-track-static type="text/javascript" src={Routes.static_path(@conn, "/assets/app.js")}></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>