purge chat and shout endpoints
[akkoma] / lib / pleroma / web / streamer.ex
index 0b6cc89e906b4f2d8858fb68261b0d288062e686..9a4ac1317dcf90d0ff8a425236832f5db50c783c 100644 (file)
@@ -1,12 +1,11 @@
 # Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Web.Streamer do
   require Logger
 
   alias Pleroma.Activity
-  alias Pleroma.Chat.MessageReference
   alias Pleroma.Config
   alias Pleroma.Conversation.Participation
   alias Pleroma.Notification
@@ -25,7 +24,7 @@ defmodule Pleroma.Web.Streamer do
   def registry, do: @registry
 
   @public_streams ["public", "public:local", "public:media", "public:local:media"]
-  @user_streams ["user", "user:notification", "direct", "user:pleroma_chat"]
+  @user_streams ["user", "user:notification", "direct"]
 
   @doc "Expands and authorizes a stream, and registers the process for streaming."
   @spec get_topic_and_add_socket(
@@ -151,7 +150,7 @@ defmodule Pleroma.Web.Streamer do
     recipients = MapSet.new(item.recipients)
     domain_blocks = Pleroma.Web.ActivityPub.MRF.subdomains_regex(user.domain_blocks)
 
-    with parent <- Object.normalize(item) || item,
+    with parent <- Object.normalize(item, fetch: false) || item,
          true <- Enum.all?([blocked_ap_ids, muted_ap_ids], &(item.actor not in &1)),
          true <- item.data["type"] != "Announce" || item.actor not in reblog_muted_ap_ids,
          true <-
@@ -186,18 +185,15 @@ defmodule Pleroma.Web.Streamer do
     end)
   end
 
-  defp do_stream("relationships:update", item) do
-    text = StreamerView.render("relationships_update.json", item)
+  defp do_stream("follow_relationship", item) do
+    text = StreamerView.render("follow_relationships_update.json", item)
+    user_topic = "user:#{item.follower.id}"
 
-    [item.follower, item.following]
-    |> Enum.map(fn %{id: id} -> "user:#{id}" end)
-    |> Enum.each(fn user_topic ->
-      Logger.debug("Trying to push relationships:update to #{user_topic}\n\n")
+    Logger.debug("Trying to push follow relationship update to #{user_topic}\n\n")
 
-      Registry.dispatch(@registry, user_topic, fn list ->
-        Enum.each(list, fn {pid, _auth} ->
-          send(pid, {:text, text})
-        end)
+    Registry.dispatch(@registry, user_topic, fn list ->
+      Enum.each(list, fn {pid, _auth} ->
+        send(pid, {:text, text})
       end)
     end)
   end
@@ -244,19 +240,6 @@ defmodule Pleroma.Web.Streamer do
     end)
   end
 
-  defp do_stream(topic, {user, %MessageReference{} = cm_ref})
-       when topic in ["user", "user:pleroma_chat"] do
-    topic = "#{topic}:#{user.id}"
-
-    text = StreamerView.render("chat_update.json", %{chat_message_reference: cm_ref})
-
-    Registry.dispatch(@registry, topic, fn list ->
-      Enum.each(list, fn {pid, _auth} ->
-        send(pid, {:text, text})
-      end)
-    end)
-  end
-
   defp do_stream("user", item) do
     Logger.debug("Trying to push to users")