Don't save user in socket, just save the name.
authorRoger Braun <roger@rogerbraun.net>
Tue, 5 Dec 2017 09:01:36 +0000 (10:01 +0100)
committerRoger Braun <roger@rogerbraun.net>
Tue, 5 Dec 2017 09:01:36 +0000 (10:01 +0100)
lib/pleroma/web/channels/user_socket.ex
lib/pleroma/web/chat_channel.ex

index d8171cabd1812428380f7838757268f9ec74c7e5..4a9bb8e2245a8ceabcabe8996bfb8334ff6617d5 100644 (file)
@@ -25,7 +25,7 @@ defmodule Pleroma.Web.UserSocket do
   def connect(%{"token" => token}, socket) do
     with {:ok, user_id} <- Phoenix.Token.verify(socket, "user socket", token, max_age: 84600),
          %User{} = user <- Pleroma.Repo.get(User, user_id) do
-      {:ok, assign(socket, :user, user)}
+      {:ok, assign(socket, :user_name, user.nickname)}
     else
       _e -> :error
     end
index c2277d73dd2da2933a9924d5a963be82ca95d16a..268bef17d2f17f51ead73e60991246f8ab2e518b 100644 (file)
@@ -1,6 +1,7 @@
 defmodule Pleroma.Web.ChatChannel do
   use Phoenix.Channel
   alias Pleroma.Web.ChatChannel.ChatChannelState
+  alias Pleroma.User
 
   def join("chat:public", _message, socket) do
     send(self(), :after_join)
@@ -12,10 +13,10 @@ defmodule Pleroma.Web.ChatChannel do
     {:noreply, socket}
   end
 
-  def handle_in("new_msg", %{"text" => text}, socket) do
-    author = socket.assigns[:user]
+  def handle_in("new_msg", %{"text" => text}, %{assigns: %{user_name: user_name}} = socket) do
+    author = User.get_cached_by_nickname(user_name)
     author = Pleroma.Web.MastodonAPI.AccountView.render("account.json", user: author)
-    message= ChatChannelState.add_message(%{text: text, author: author})
+    message = ChatChannelState.add_message(%{text: text, author: author})
 
     broadcast! socket, "new_msg", message
     {:noreply, socket}