X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Fviews%2Fstreamer_view.ex;h=eba3d96ec19f59cfc43973d387858d57cf69368a;hb=1409f91d504f9fd891044b30c8c3082565f0a8d5;hp=616e0c4f24f8c5e1743cfa877f70361eacc105ee;hpb=f3ccd50a33c9eec3661bf2116fe38542f04986aa;p=akkoma
diff --git a/lib/pleroma/web/views/streamer_view.ex b/lib/pleroma/web/views/streamer_view.ex
index 616e0c4f2..eba3d96ec 100644
--- a/lib/pleroma/web/views/streamer_view.ex
+++ b/lib/pleroma/web/views/streamer_view.ex
@@ -1,44 +1,37 @@
# Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors
+# Copyright © 2017-2021 Pleroma Authors
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.StreamerView do
use Pleroma.Web, :view
alias Pleroma.Activity
- alias Pleroma.Chat
- alias Pleroma.ChatMessageReference
alias Pleroma.Conversation.Participation
alias Pleroma.Notification
alias Pleroma.User
alias Pleroma.Web.MastodonAPI.NotificationView
- def render("chat_update.json", object, user, recipients) do
- chat = Chat.get(user.id, hd(recipients -- [user.ap_id]))
-
- # Explicitly giving the cmr for the object here, so we don't accidentally
- # send a later 'last_message' that was inserted between inserting this and
- # streaming it out
- cm_ref = ChatMessageReference.for_chat_and_object(chat, object)
-
- representation =
- Pleroma.Web.PleromaAPI.ChatView.render(
- "show.json",
- %{last_message: cm_ref, chat: chat}
- )
-
+ def render("update.json", %Activity{} = activity, %User{} = user, topic) do
%{
- event: "pleroma:chat_update",
+ stream: [topic],
+ event: "update",
payload:
- representation
+ Pleroma.Web.MastodonAPI.StatusView.render(
+ "show.json",
+ activity: activity,
+ for: user
+ )
|> Jason.encode!()
}
|> Jason.encode!()
end
- def render("update.json", %Activity{} = activity, %User{} = user) do
+ def render("status_update.json", %Activity{} = activity, %User{} = user, topic) do
+ activity = Activity.get_create_by_object_ap_id_with_object(activity.object.data["id"])
+
%{
- event: "update",
+ stream: [topic],
+ event: "status.update",
payload:
Pleroma.Web.MastodonAPI.StatusView.render(
"show.json",
@@ -50,8 +43,9 @@ defmodule Pleroma.Web.StreamerView do
|> Jason.encode!()
end
- def render("notification.json", %Notification{} = notify, %User{} = user) do
+ def render("notification.json", %Notification{} = notify, %User{} = user, topic) do
%{
+ stream: [topic],
event: "notification",
payload:
NotificationView.render(
@@ -63,8 +57,9 @@ defmodule Pleroma.Web.StreamerView do
|> Jason.encode!()
end
- def render("update.json", %Activity{} = activity) do
+ def render("update.json", %Activity{} = activity, topic) do
%{
+ stream: [topic],
event: "update",
payload:
Pleroma.Web.MastodonAPI.StatusView.render(
@@ -76,8 +71,48 @@ defmodule Pleroma.Web.StreamerView do
|> Jason.encode!()
end
- def render("conversation.json", %Participation{} = participation) do
+ def render("status_update.json", %Activity{} = activity, topic) do
+ activity = Activity.get_create_by_object_ap_id_with_object(activity.object.data["id"])
+
+ %{
+ stream: [topic],
+ event: "status.update",
+ payload:
+ Pleroma.Web.MastodonAPI.StatusView.render(
+ "show.json",
+ activity: activity
+ )
+ |> Jason.encode!()
+ }
+ |> Jason.encode!()
+ end
+
+ def render("follow_relationships_update.json", item, topic) do
+ %{
+ stream: [topic],
+ event: "pleroma:follow_relationships_update",
+ payload:
+ %{
+ state: item.state,
+ follower: %{
+ id: item.follower.id,
+ follower_count: item.follower.follower_count,
+ following_count: item.follower.following_count
+ },
+ following: %{
+ id: item.following.id,
+ follower_count: item.following.follower_count,
+ following_count: item.following.following_count
+ }
+ }
+ |> Jason.encode!()
+ }
+ |> Jason.encode!()
+ end
+
+ def render("conversation.json", %Participation{} = participation, topic) do
%{
+ stream: [topic],
event: "conversation",
payload:
Pleroma.Web.MastodonAPI.ConversationView.render("participation.json", %{