- def handle_in("new_msg", %{"text" => text}, socket) do
- author = socket.assigns[:user]
- author = Pleroma.Web.MastodonAPI.AccountView.render("account.json", user: author)
- broadcast! socket, "new_msg", %{text: text, author: author}
+ def handle_info(:after_join, socket) do
+ push(socket, "messages", %{messages: ChatChannelState.messages()})
+ {:noreply, socket}
+ end
+
+ def handle_in("new_msg", %{"text" => text}, %{assigns: %{user_name: user_name}} = socket) do
+ text = String.trim(text)
+
+ if String.length(text) in 1..Pleroma.Config.get([:instance, :chat_limit]) do
+ author = User.get_cached_by_nickname(user_name)
+ author_json = AccountView.render("show.json", user: author, skip_visibility_check: true)
+
+ message = ChatChannelState.add_message(%{text: text, author: author_json})
+
+ broadcast!(socket, "new_msg", message)
+ end
+