ChatMessageReference -> Chat.MessageReference
This commit is contained in:
parent
137adef6e0
commit
ca0e6e702b
|
@ -2,7 +2,7 @@
|
||||||
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.ChatMessageReference do
|
defmodule Pleroma.Chat.MessageReference do
|
||||||
@moduledoc """
|
@moduledoc """
|
||||||
A reference that builds a relation between an AP chat message that a user can see and whether it has been seen
|
A reference that builds a relation between an AP chat message that a user can see and whether it has been seen
|
||||||
by them, or should be displayed to them. Used to build the chat view that is presented to the user.
|
by them, or should be displayed to them. Used to build the chat view that is presented to the user.
|
|
@ -7,7 +7,7 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do
|
||||||
"""
|
"""
|
||||||
alias Pleroma.Activity
|
alias Pleroma.Activity
|
||||||
alias Pleroma.Chat
|
alias Pleroma.Chat
|
||||||
alias Pleroma.ChatMessageReference
|
alias Pleroma.Chat.MessageReference
|
||||||
alias Pleroma.Notification
|
alias Pleroma.Notification
|
||||||
alias Pleroma.Object
|
alias Pleroma.Object
|
||||||
alias Pleroma.Repo
|
alias Pleroma.Repo
|
||||||
|
@ -111,7 +111,7 @@ def handle(%{data: %{"type" => "Delete", "object" => deleted_object}} = object,
|
||||||
Object.decrease_replies_count(in_reply_to)
|
Object.decrease_replies_count(in_reply_to)
|
||||||
end
|
end
|
||||||
|
|
||||||
ChatMessageReference.delete_for_object(deleted_object)
|
MessageReference.delete_for_object(deleted_object)
|
||||||
|
|
||||||
ActivityPub.stream_out(object)
|
ActivityPub.stream_out(object)
|
||||||
ActivityPub.stream_out_participations(deleted_object, user)
|
ActivityPub.stream_out_participations(deleted_object, user)
|
||||||
|
@ -146,13 +146,13 @@ def handle_object_creation(%{"type" => "ChatMessage"} = object, meta) do
|
||||||
|> Enum.each(fn [user, other_user] ->
|
|> Enum.each(fn [user, other_user] ->
|
||||||
if user.local do
|
if user.local do
|
||||||
{:ok, chat} = Chat.bump_or_create(user.id, other_user.ap_id)
|
{:ok, chat} = Chat.bump_or_create(user.id, other_user.ap_id)
|
||||||
{:ok, cm_ref} = ChatMessageReference.create(chat, object, user.ap_id != actor.ap_id)
|
{:ok, cm_ref} = MessageReference.create(chat, object, user.ap_id != actor.ap_id)
|
||||||
|
|
||||||
# We add a cache of the unread value here so that it
|
# We add a cache of the unread value here so that it
|
||||||
# doesn't change when being streamed out
|
# doesn't change when being streamed out
|
||||||
chat =
|
chat =
|
||||||
chat
|
chat
|
||||||
|> Map.put(:unread, ChatMessageReference.unread_count_for_chat(chat))
|
|> Map.put(:unread, MessageReference.unread_count_for_chat(chat))
|
||||||
|
|
||||||
Streamer.stream(
|
Streamer.stream(
|
||||||
["user", "user:pleroma_chat"],
|
["user", "user:pleroma_chat"],
|
||||||
|
|
|
@ -6,7 +6,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationView do
|
||||||
use Pleroma.Web, :view
|
use Pleroma.Web, :view
|
||||||
|
|
||||||
alias Pleroma.Activity
|
alias Pleroma.Activity
|
||||||
alias Pleroma.ChatMessageReference
|
alias Pleroma.Chat.MessageReference
|
||||||
alias Pleroma.Notification
|
alias Pleroma.Notification
|
||||||
alias Pleroma.Object
|
alias Pleroma.Object
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
|
@ -15,7 +15,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationView do
|
||||||
alias Pleroma.Web.MastodonAPI.AccountView
|
alias Pleroma.Web.MastodonAPI.AccountView
|
||||||
alias Pleroma.Web.MastodonAPI.NotificationView
|
alias Pleroma.Web.MastodonAPI.NotificationView
|
||||||
alias Pleroma.Web.MastodonAPI.StatusView
|
alias Pleroma.Web.MastodonAPI.StatusView
|
||||||
alias Pleroma.Web.PleromaAPI.ChatMessageReferenceView
|
alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView
|
||||||
|
|
||||||
@parent_types ~w{Like Announce EmojiReact}
|
@parent_types ~w{Like Announce EmojiReact}
|
||||||
|
|
||||||
|
@ -139,9 +139,9 @@ defp put_chat_message(response, activity, reading_user, opts) do
|
||||||
object = Object.normalize(activity)
|
object = Object.normalize(activity)
|
||||||
author = User.get_cached_by_ap_id(object.data["actor"])
|
author = User.get_cached_by_ap_id(object.data["actor"])
|
||||||
chat = Pleroma.Chat.get(reading_user.id, author.ap_id)
|
chat = Pleroma.Chat.get(reading_user.id, author.ap_id)
|
||||||
cm_ref = ChatMessageReference.for_chat_and_object(chat, object)
|
cm_ref = MessageReference.for_chat_and_object(chat, object)
|
||||||
render_opts = Map.merge(opts, %{for: reading_user, chat_message_reference: cm_ref})
|
render_opts = Map.merge(opts, %{for: reading_user, chat_message_reference: cm_ref})
|
||||||
chat_message_render = ChatMessageReferenceView.render("show.json", render_opts)
|
chat_message_render = MessageReferenceView.render("show.json", render_opts)
|
||||||
|
|
||||||
Map.put(response, :chat_message, chat_message_render)
|
Map.put(response, :chat_message, chat_message_render)
|
||||||
end
|
end
|
||||||
|
|
|
@ -6,14 +6,14 @@ defmodule Pleroma.Web.PleromaAPI.ChatController do
|
||||||
|
|
||||||
alias Pleroma.Activity
|
alias Pleroma.Activity
|
||||||
alias Pleroma.Chat
|
alias Pleroma.Chat
|
||||||
alias Pleroma.ChatMessageReference
|
alias Pleroma.Chat.MessageReference
|
||||||
alias Pleroma.Object
|
alias Pleroma.Object
|
||||||
alias Pleroma.Pagination
|
alias Pleroma.Pagination
|
||||||
alias Pleroma.Plugs.OAuthScopesPlug
|
alias Pleroma.Plugs.OAuthScopesPlug
|
||||||
alias Pleroma.Repo
|
alias Pleroma.Repo
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
alias Pleroma.Web.CommonAPI
|
alias Pleroma.Web.CommonAPI
|
||||||
alias Pleroma.Web.PleromaAPI.ChatMessageReferenceView
|
alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView
|
||||||
alias Pleroma.Web.PleromaAPI.ChatView
|
alias Pleroma.Web.PleromaAPI.ChatView
|
||||||
|
|
||||||
import Ecto.Query
|
import Ecto.Query
|
||||||
|
@ -46,13 +46,13 @@ def delete_message(%{assigns: %{user: %{id: user_id} = user}} = conn, %{
|
||||||
message_id: message_id,
|
message_id: message_id,
|
||||||
id: chat_id
|
id: chat_id
|
||||||
}) do
|
}) do
|
||||||
with %ChatMessageReference{} = cm_ref <-
|
with %MessageReference{} = cm_ref <-
|
||||||
ChatMessageReference.get_by_id(message_id),
|
MessageReference.get_by_id(message_id),
|
||||||
^chat_id <- cm_ref.chat_id |> to_string(),
|
^chat_id <- cm_ref.chat_id |> to_string(),
|
||||||
%Chat{user_id: ^user_id} <- Chat.get_by_id(chat_id),
|
%Chat{user_id: ^user_id} <- Chat.get_by_id(chat_id),
|
||||||
{:ok, _} <- remove_or_delete(cm_ref, user) do
|
{:ok, _} <- remove_or_delete(cm_ref, user) do
|
||||||
conn
|
conn
|
||||||
|> put_view(ChatMessageReferenceView)
|
|> put_view(MessageReferenceView)
|
||||||
|> render("show.json", chat_message_reference: cm_ref)
|
|> render("show.json", chat_message_reference: cm_ref)
|
||||||
else
|
else
|
||||||
_e ->
|
_e ->
|
||||||
|
@ -71,7 +71,7 @@ defp remove_or_delete(
|
||||||
|
|
||||||
defp remove_or_delete(cm_ref, _) do
|
defp remove_or_delete(cm_ref, _) do
|
||||||
cm_ref
|
cm_ref
|
||||||
|> ChatMessageReference.delete()
|
|> MessageReference.delete()
|
||||||
end
|
end
|
||||||
|
|
||||||
def post_chat_message(
|
def post_chat_message(
|
||||||
|
@ -87,9 +87,9 @@ def post_chat_message(
|
||||||
media_id: params[:media_id]
|
media_id: params[:media_id]
|
||||||
),
|
),
|
||||||
message <- Object.normalize(activity, false),
|
message <- Object.normalize(activity, false),
|
||||||
cm_ref <- ChatMessageReference.for_chat_and_object(chat, message) do
|
cm_ref <- MessageReference.for_chat_and_object(chat, message) do
|
||||||
conn
|
conn
|
||||||
|> put_view(ChatMessageReferenceView)
|
|> put_view(MessageReferenceView)
|
||||||
|> render("show.json", for: user, chat_message_reference: cm_ref)
|
|> render("show.json", for: user, chat_message_reference: cm_ref)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -98,20 +98,20 @@ def mark_message_as_read(%{assigns: %{user: %{id: user_id} = user}} = conn, %{
|
||||||
id: chat_id,
|
id: chat_id,
|
||||||
message_id: message_id
|
message_id: message_id
|
||||||
}) do
|
}) do
|
||||||
with %ChatMessageReference{} = cm_ref <-
|
with %MessageReference{} = cm_ref <-
|
||||||
ChatMessageReference.get_by_id(message_id),
|
MessageReference.get_by_id(message_id),
|
||||||
^chat_id <- cm_ref.chat_id |> to_string(),
|
^chat_id <- cm_ref.chat_id |> to_string(),
|
||||||
%Chat{user_id: ^user_id} <- Chat.get_by_id(chat_id),
|
%Chat{user_id: ^user_id} <- Chat.get_by_id(chat_id),
|
||||||
{:ok, cm_ref} <- ChatMessageReference.mark_as_read(cm_ref) do
|
{:ok, cm_ref} <- MessageReference.mark_as_read(cm_ref) do
|
||||||
conn
|
conn
|
||||||
|> put_view(ChatMessageReferenceView)
|
|> put_view(MessageReferenceView)
|
||||||
|> render("show.json", for: user, chat_message_reference: cm_ref)
|
|> render("show.json", for: user, chat_message_reference: cm_ref)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def mark_as_read(%{assigns: %{user: %{id: user_id}}} = conn, %{id: id}) do
|
def mark_as_read(%{assigns: %{user: %{id: user_id}}} = conn, %{id: id}) do
|
||||||
with %Chat{} = chat <- Repo.get_by(Chat, id: id, user_id: user_id),
|
with %Chat{} = chat <- Repo.get_by(Chat, id: id, user_id: user_id),
|
||||||
{_n, _} <- ChatMessageReference.set_all_seen_for_chat(chat) do
|
{_n, _} <- MessageReference.set_all_seen_for_chat(chat) do
|
||||||
conn
|
conn
|
||||||
|> put_view(ChatView)
|
|> put_view(ChatView)
|
||||||
|> render("show.json", chat: chat)
|
|> render("show.json", chat: chat)
|
||||||
|
@ -122,11 +122,11 @@ def messages(%{assigns: %{user: %{id: user_id} = user}} = conn, %{id: id} = para
|
||||||
with %Chat{} = chat <- Repo.get_by(Chat, id: id, user_id: user_id) do
|
with %Chat{} = chat <- Repo.get_by(Chat, id: id, user_id: user_id) do
|
||||||
cm_refs =
|
cm_refs =
|
||||||
chat
|
chat
|
||||||
|> ChatMessageReference.for_chat_query()
|
|> MessageReference.for_chat_query()
|
||||||
|> Pagination.fetch_paginated(params |> stringify_keys())
|
|> Pagination.fetch_paginated(params |> stringify_keys())
|
||||||
|
|
||||||
conn
|
conn
|
||||||
|> put_view(ChatMessageReferenceView)
|
|> put_view(MessageReferenceView)
|
||||||
|> render("index.json", for: user, chat_message_references: cm_refs)
|
|> render("index.json", for: user, chat_message_references: cm_refs)
|
||||||
else
|
else
|
||||||
_ ->
|
_ ->
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Web.PleromaAPI.ChatMessageReferenceView do
|
defmodule Pleroma.Web.PleromaAPI.Chat.MessageReferenceView do
|
||||||
use Pleroma.Web, :view
|
use Pleroma.Web, :view
|
||||||
|
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
|
@ -6,24 +6,24 @@ defmodule Pleroma.Web.PleromaAPI.ChatView do
|
||||||
use Pleroma.Web, :view
|
use Pleroma.Web, :view
|
||||||
|
|
||||||
alias Pleroma.Chat
|
alias Pleroma.Chat
|
||||||
alias Pleroma.ChatMessageReference
|
alias Pleroma.Chat.MessageReference
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
alias Pleroma.Web.CommonAPI.Utils
|
alias Pleroma.Web.CommonAPI.Utils
|
||||||
alias Pleroma.Web.MastodonAPI.AccountView
|
alias Pleroma.Web.MastodonAPI.AccountView
|
||||||
alias Pleroma.Web.PleromaAPI.ChatMessageReferenceView
|
alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView
|
||||||
|
|
||||||
def render("show.json", %{chat: %Chat{} = chat} = opts) do
|
def render("show.json", %{chat: %Chat{} = chat} = opts) do
|
||||||
recipient = User.get_cached_by_ap_id(chat.recipient)
|
recipient = User.get_cached_by_ap_id(chat.recipient)
|
||||||
|
|
||||||
last_message = opts[:last_message] || ChatMessageReference.last_message_for_chat(chat)
|
last_message = opts[:last_message] || MessageReference.last_message_for_chat(chat)
|
||||||
|
|
||||||
%{
|
%{
|
||||||
id: chat.id |> to_string(),
|
id: chat.id |> to_string(),
|
||||||
account: AccountView.render("show.json", Map.put(opts, :user, recipient)),
|
account: AccountView.render("show.json", Map.put(opts, :user, recipient)),
|
||||||
unread: Map.get(chat, :unread) || ChatMessageReference.unread_count_for_chat(chat),
|
unread: Map.get(chat, :unread) || MessageReference.unread_count_for_chat(chat),
|
||||||
last_message:
|
last_message:
|
||||||
last_message &&
|
last_message &&
|
||||||
ChatMessageReferenceView.render("show.json", chat_message_reference: last_message),
|
MessageReferenceView.render("show.json", chat_message_reference: last_message),
|
||||||
updated_at: Utils.to_masto_date(chat.updated_at)
|
updated_at: Utils.to_masto_date(chat.updated_at)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
|
@ -6,7 +6,7 @@ defmodule Pleroma.Web.Streamer do
|
||||||
require Logger
|
require Logger
|
||||||
|
|
||||||
alias Pleroma.Activity
|
alias Pleroma.Activity
|
||||||
alias Pleroma.ChatMessageReference
|
alias Pleroma.Chat.MessageReference
|
||||||
alias Pleroma.Config
|
alias Pleroma.Config
|
||||||
alias Pleroma.Conversation.Participation
|
alias Pleroma.Conversation.Participation
|
||||||
alias Pleroma.Notification
|
alias Pleroma.Notification
|
||||||
|
@ -187,7 +187,7 @@ defp do_stream(topic, %Notification{} = item)
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
defp do_stream(topic, {user, %ChatMessageReference{} = cm_ref})
|
defp do_stream(topic, {user, %MessageReference{} = cm_ref})
|
||||||
when topic in ["user", "user:pleroma_chat"] do
|
when topic in ["user", "user:pleroma_chat"] do
|
||||||
topic = "#{topic}:#{user.id}"
|
topic = "#{topic}:#{user.id}"
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.ChatMessageReferenceTest do
|
defmodule Pleroma.Chat.MessageReferenceTest do
|
||||||
use Pleroma.DataCase, async: true
|
use Pleroma.DataCase, async: true
|
||||||
|
|
||||||
alias Pleroma.Chat
|
alias Pleroma.Chat
|
||||||
alias Pleroma.ChatMessageReference
|
alias Pleroma.Chat.MessageReference
|
||||||
alias Pleroma.Web.CommonAPI
|
alias Pleroma.Web.CommonAPI
|
||||||
|
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
|
@ -21,7 +21,7 @@ test "it returns the last message in a chat" do
|
||||||
|
|
||||||
{:ok, chat} = Chat.get_or_create(user.id, recipient.ap_id)
|
{:ok, chat} = Chat.get_or_create(user.id, recipient.ap_id)
|
||||||
|
|
||||||
message = ChatMessageReference.last_message_for_chat(chat)
|
message = MessageReference.last_message_for_chat(chat)
|
||||||
|
|
||||||
assert message.object.data["content"] == "ho"
|
assert message.object.data["content"] == "ho"
|
||||||
end
|
end
|
|
@ -8,7 +8,7 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do
|
||||||
|
|
||||||
alias Pleroma.Activity
|
alias Pleroma.Activity
|
||||||
alias Pleroma.Chat
|
alias Pleroma.Chat
|
||||||
alias Pleroma.ChatMessageReference
|
alias Pleroma.Chat.MessageReference
|
||||||
alias Pleroma.Notification
|
alias Pleroma.Notification
|
||||||
alias Pleroma.Object
|
alias Pleroma.Object
|
||||||
alias Pleroma.Repo
|
alias Pleroma.Repo
|
||||||
|
@ -391,7 +391,7 @@ test "it streams the created ChatMessage" do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
test "it creates a Chat and ChatMessageReferences for the local users and bumps the unread count, except for the author" do
|
test "it creates a Chat and MessageReferences for the local users and bumps the unread count, except for the author" do
|
||||||
author = insert(:user, local: true)
|
author = insert(:user, local: true)
|
||||||
recipient = insert(:user, local: true)
|
recipient = insert(:user, local: true)
|
||||||
|
|
||||||
|
@ -431,14 +431,14 @@ test "it creates a Chat and ChatMessageReferences for the local users and bumps
|
||||||
|
|
||||||
chat = Chat.get(author.id, recipient.ap_id)
|
chat = Chat.get(author.id, recipient.ap_id)
|
||||||
|
|
||||||
[cm_ref] = ChatMessageReference.for_chat_query(chat) |> Repo.all()
|
[cm_ref] = MessageReference.for_chat_query(chat) |> Repo.all()
|
||||||
|
|
||||||
assert cm_ref.object.data["content"] == "hey"
|
assert cm_ref.object.data["content"] == "hey"
|
||||||
assert cm_ref.unread == false
|
assert cm_ref.unread == false
|
||||||
|
|
||||||
chat = Chat.get(recipient.id, author.ap_id)
|
chat = Chat.get(recipient.id, author.ap_id)
|
||||||
|
|
||||||
[cm_ref] = ChatMessageReference.for_chat_query(chat) |> Repo.all()
|
[cm_ref] = MessageReference.for_chat_query(chat) |> Repo.all()
|
||||||
|
|
||||||
assert cm_ref.object.data["content"] == "hey"
|
assert cm_ref.object.data["content"] == "hey"
|
||||||
assert cm_ref.unread == true
|
assert cm_ref.unread == true
|
||||||
|
|
|
@ -7,7 +7,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do
|
||||||
|
|
||||||
alias Pleroma.Activity
|
alias Pleroma.Activity
|
||||||
alias Pleroma.Chat
|
alias Pleroma.Chat
|
||||||
alias Pleroma.ChatMessageReference
|
alias Pleroma.Chat.MessageReference
|
||||||
alias Pleroma.Notification
|
alias Pleroma.Notification
|
||||||
alias Pleroma.Object
|
alias Pleroma.Object
|
||||||
alias Pleroma.Repo
|
alias Pleroma.Repo
|
||||||
|
@ -17,7 +17,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do
|
||||||
alias Pleroma.Web.MastodonAPI.AccountView
|
alias Pleroma.Web.MastodonAPI.AccountView
|
||||||
alias Pleroma.Web.MastodonAPI.NotificationView
|
alias Pleroma.Web.MastodonAPI.NotificationView
|
||||||
alias Pleroma.Web.MastodonAPI.StatusView
|
alias Pleroma.Web.MastodonAPI.StatusView
|
||||||
alias Pleroma.Web.PleromaAPI.ChatMessageReferenceView
|
alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
|
|
||||||
defp test_notifications_rendering(notifications, user, expected_result) do
|
defp test_notifications_rendering(notifications, user, expected_result) do
|
||||||
|
@ -45,15 +45,14 @@ test "ChatMessage notification" do
|
||||||
object = Object.normalize(activity)
|
object = Object.normalize(activity)
|
||||||
chat = Chat.get(recipient.id, user.ap_id)
|
chat = Chat.get(recipient.id, user.ap_id)
|
||||||
|
|
||||||
cm_ref = ChatMessageReference.for_chat_and_object(chat, object)
|
cm_ref = MessageReference.for_chat_and_object(chat, object)
|
||||||
|
|
||||||
expected = %{
|
expected = %{
|
||||||
id: to_string(notification.id),
|
id: to_string(notification.id),
|
||||||
pleroma: %{is_seen: false},
|
pleroma: %{is_seen: false},
|
||||||
type: "pleroma:chat_mention",
|
type: "pleroma:chat_mention",
|
||||||
account: AccountView.render("show.json", %{user: user, for: recipient}),
|
account: AccountView.render("show.json", %{user: user, for: recipient}),
|
||||||
chat_message:
|
chat_message: MessageReferenceView.render("show.json", %{chat_message_reference: cm_ref}),
|
||||||
ChatMessageReferenceView.render("show.json", %{chat_message_reference: cm_ref}),
|
|
||||||
created_at: Utils.to_masto_date(notification.inserted_at)
|
created_at: Utils.to_masto_date(notification.inserted_at)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ defmodule Pleroma.Web.PleromaAPI.ChatControllerTest do
|
||||||
use Pleroma.Web.ConnCase, async: true
|
use Pleroma.Web.ConnCase, async: true
|
||||||
|
|
||||||
alias Pleroma.Chat
|
alias Pleroma.Chat
|
||||||
alias Pleroma.ChatMessageReference
|
alias Pleroma.Chat.MessageReference
|
||||||
alias Pleroma.Object
|
alias Pleroma.Object
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
alias Pleroma.Web.ActivityPub.ActivityPub
|
alias Pleroma.Web.ActivityPub.ActivityPub
|
||||||
|
@ -23,7 +23,7 @@ test "it marks one message as read", %{conn: conn, user: user} do
|
||||||
{:ok, _create} = CommonAPI.post_chat_message(other_user, user, "sup part 2")
|
{:ok, _create} = CommonAPI.post_chat_message(other_user, user, "sup part 2")
|
||||||
{:ok, chat} = Chat.get_or_create(user.id, other_user.ap_id)
|
{:ok, chat} = Chat.get_or_create(user.id, other_user.ap_id)
|
||||||
object = Object.normalize(create, false)
|
object = Object.normalize(create, false)
|
||||||
cm_ref = ChatMessageReference.for_chat_and_object(chat, object)
|
cm_ref = MessageReference.for_chat_and_object(chat, object)
|
||||||
|
|
||||||
assert cm_ref.unread == true
|
assert cm_ref.unread == true
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ test "it marks one message as read", %{conn: conn, user: user} do
|
||||||
|
|
||||||
assert result["unread"] == false
|
assert result["unread"] == false
|
||||||
|
|
||||||
cm_ref = ChatMessageReference.for_chat_and_object(chat, object)
|
cm_ref = MessageReference.for_chat_and_object(chat, object)
|
||||||
|
|
||||||
assert cm_ref.unread == false
|
assert cm_ref.unread == false
|
||||||
end
|
end
|
||||||
|
@ -50,7 +50,7 @@ test "it marks all messages in a chat as read", %{conn: conn, user: user} do
|
||||||
{:ok, _create} = CommonAPI.post_chat_message(other_user, user, "sup part 2")
|
{:ok, _create} = CommonAPI.post_chat_message(other_user, user, "sup part 2")
|
||||||
{:ok, chat} = Chat.get_or_create(user.id, other_user.ap_id)
|
{:ok, chat} = Chat.get_or_create(user.id, other_user.ap_id)
|
||||||
object = Object.normalize(create, false)
|
object = Object.normalize(create, false)
|
||||||
cm_ref = ChatMessageReference.for_chat_and_object(chat, object)
|
cm_ref = MessageReference.for_chat_and_object(chat, object)
|
||||||
|
|
||||||
assert cm_ref.unread == true
|
assert cm_ref.unread == true
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ test "it marks all messages in a chat as read", %{conn: conn, user: user} do
|
||||||
|
|
||||||
assert result["unread"] == 0
|
assert result["unread"] == 0
|
||||||
|
|
||||||
cm_ref = ChatMessageReference.for_chat_and_object(chat, object)
|
cm_ref = MessageReference.for_chat_and_object(chat, object)
|
||||||
|
|
||||||
assert cm_ref.unread == false
|
assert cm_ref.unread == false
|
||||||
end
|
end
|
||||||
|
@ -139,7 +139,7 @@ test "it deletes a message from the chat", %{conn: conn, user: user} do
|
||||||
|
|
||||||
chat = Chat.get(user.id, recipient.ap_id)
|
chat = Chat.get(user.id, recipient.ap_id)
|
||||||
|
|
||||||
cm_ref = ChatMessageReference.for_chat_and_object(chat, object)
|
cm_ref = MessageReference.for_chat_and_object(chat, object)
|
||||||
|
|
||||||
# Deleting your own message removes the message and the reference
|
# Deleting your own message removes the message and the reference
|
||||||
result =
|
result =
|
||||||
|
@ -149,12 +149,12 @@ test "it deletes a message from the chat", %{conn: conn, user: user} do
|
||||||
|> json_response_and_validate_schema(200)
|
|> json_response_and_validate_schema(200)
|
||||||
|
|
||||||
assert result["id"] == cm_ref.id
|
assert result["id"] == cm_ref.id
|
||||||
refute ChatMessageReference.get_by_id(cm_ref.id)
|
refute MessageReference.get_by_id(cm_ref.id)
|
||||||
assert %{data: %{"type" => "Tombstone"}} = Object.get_by_id(object.id)
|
assert %{data: %{"type" => "Tombstone"}} = Object.get_by_id(object.id)
|
||||||
|
|
||||||
# Deleting other people's messages just removes the reference
|
# Deleting other people's messages just removes the reference
|
||||||
object = Object.normalize(other_message, false)
|
object = Object.normalize(other_message, false)
|
||||||
cm_ref = ChatMessageReference.for_chat_and_object(chat, object)
|
cm_ref = MessageReference.for_chat_and_object(chat, object)
|
||||||
|
|
||||||
result =
|
result =
|
||||||
conn
|
conn
|
||||||
|
@ -163,7 +163,7 @@ test "it deletes a message from the chat", %{conn: conn, user: user} do
|
||||||
|> json_response_and_validate_schema(200)
|
|> json_response_and_validate_schema(200)
|
||||||
|
|
||||||
assert result["id"] == cm_ref.id
|
assert result["id"] == cm_ref.id
|
||||||
refute ChatMessageReference.get_by_id(cm_ref.id)
|
refute MessageReference.get_by_id(cm_ref.id)
|
||||||
assert Object.get_by_id(object.id)
|
assert Object.get_by_id(object.id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,15 +2,15 @@
|
||||||
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Web.PleromaAPI.ChatMessageReferenceViewTest do
|
defmodule Pleroma.Web.PleromaAPI.Chat.MessageReferenceViewTest do
|
||||||
use Pleroma.DataCase
|
use Pleroma.DataCase
|
||||||
|
|
||||||
alias Pleroma.Chat
|
alias Pleroma.Chat
|
||||||
alias Pleroma.ChatMessageReference
|
alias Pleroma.Chat.MessageReference
|
||||||
alias Pleroma.Object
|
alias Pleroma.Object
|
||||||
alias Pleroma.Web.ActivityPub.ActivityPub
|
alias Pleroma.Web.ActivityPub.ActivityPub
|
||||||
alias Pleroma.Web.CommonAPI
|
alias Pleroma.Web.CommonAPI
|
||||||
alias Pleroma.Web.PleromaAPI.ChatMessageReferenceView
|
alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView
|
||||||
|
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
|
|
||||||
|
@ -31,9 +31,9 @@ test "it displays a chat message" do
|
||||||
|
|
||||||
object = Object.normalize(activity)
|
object = Object.normalize(activity)
|
||||||
|
|
||||||
cm_ref = ChatMessageReference.for_chat_and_object(chat, object)
|
cm_ref = MessageReference.for_chat_and_object(chat, object)
|
||||||
|
|
||||||
chat_message = ChatMessageReferenceView.render("show.json", chat_message_reference: cm_ref)
|
chat_message = MessageReferenceView.render("show.json", chat_message_reference: cm_ref)
|
||||||
|
|
||||||
assert chat_message[:id] == cm_ref.id
|
assert chat_message[:id] == cm_ref.id
|
||||||
assert chat_message[:content] == "kippis :firefox:"
|
assert chat_message[:content] == "kippis :firefox:"
|
||||||
|
@ -47,10 +47,9 @@ test "it displays a chat message" do
|
||||||
|
|
||||||
object = Object.normalize(activity)
|
object = Object.normalize(activity)
|
||||||
|
|
||||||
cm_ref = ChatMessageReference.for_chat_and_object(chat, object)
|
cm_ref = MessageReference.for_chat_and_object(chat, object)
|
||||||
|
|
||||||
chat_message_two =
|
chat_message_two = MessageReferenceView.render("show.json", chat_message_reference: cm_ref)
|
||||||
ChatMessageReferenceView.render("show.json", chat_message_reference: cm_ref)
|
|
||||||
|
|
||||||
assert chat_message_two[:id] == cm_ref.id
|
assert chat_message_two[:id] == cm_ref.id
|
||||||
assert chat_message_two[:content] == "gkgkgk"
|
assert chat_message_two[:content] == "gkgkgk"
|
|
@ -6,12 +6,12 @@ defmodule Pleroma.Web.PleromaAPI.ChatViewTest do
|
||||||
use Pleroma.DataCase
|
use Pleroma.DataCase
|
||||||
|
|
||||||
alias Pleroma.Chat
|
alias Pleroma.Chat
|
||||||
alias Pleroma.ChatMessageReference
|
alias Pleroma.Chat.MessageReference
|
||||||
alias Pleroma.Object
|
alias Pleroma.Object
|
||||||
alias Pleroma.Web.CommonAPI
|
alias Pleroma.Web.CommonAPI
|
||||||
alias Pleroma.Web.CommonAPI.Utils
|
alias Pleroma.Web.CommonAPI.Utils
|
||||||
alias Pleroma.Web.MastodonAPI.AccountView
|
alias Pleroma.Web.MastodonAPI.AccountView
|
||||||
alias Pleroma.Web.PleromaAPI.ChatMessageReferenceView
|
alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView
|
||||||
alias Pleroma.Web.PleromaAPI.ChatView
|
alias Pleroma.Web.PleromaAPI.ChatView
|
||||||
|
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
|
@ -55,9 +55,9 @@ test "it represents a chat" do
|
||||||
|
|
||||||
represented_chat = ChatView.render("show.json", chat: chat)
|
represented_chat = ChatView.render("show.json", chat: chat)
|
||||||
|
|
||||||
cm_ref = ChatMessageReference.for_chat_and_object(chat, chat_message)
|
cm_ref = MessageReference.for_chat_and_object(chat, chat_message)
|
||||||
|
|
||||||
assert represented_chat[:last_message] ==
|
assert represented_chat[:last_message] ==
|
||||||
ChatMessageReferenceView.render("show.json", chat_message_reference: cm_ref)
|
MessageReferenceView.render("show.json", chat_message_reference: cm_ref)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,7 +8,7 @@ defmodule Pleroma.Web.StreamerTest do
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
|
|
||||||
alias Pleroma.Chat
|
alias Pleroma.Chat
|
||||||
alias Pleroma.ChatMessageReference
|
alias Pleroma.Chat.MessageReference
|
||||||
alias Pleroma.Conversation.Participation
|
alias Pleroma.Conversation.Participation
|
||||||
alias Pleroma.List
|
alias Pleroma.List
|
||||||
alias Pleroma.Object
|
alias Pleroma.Object
|
||||||
|
@ -155,7 +155,7 @@ test "it sends chat messages to the 'user:pleroma_chat' stream", %{user: user} d
|
||||||
{:ok, create_activity} = CommonAPI.post_chat_message(other_user, user, "hey cirno")
|
{:ok, create_activity} = CommonAPI.post_chat_message(other_user, user, "hey cirno")
|
||||||
object = Object.normalize(create_activity, false)
|
object = Object.normalize(create_activity, false)
|
||||||
chat = Chat.get(user.id, other_user.ap_id)
|
chat = Chat.get(user.id, other_user.ap_id)
|
||||||
cm_ref = ChatMessageReference.for_chat_and_object(chat, object)
|
cm_ref = MessageReference.for_chat_and_object(chat, object)
|
||||||
cm_ref = %{cm_ref | chat: chat, object: object}
|
cm_ref = %{cm_ref | chat: chat, object: object}
|
||||||
|
|
||||||
Streamer.get_topic_and_add_socket("user:pleroma_chat", user)
|
Streamer.get_topic_and_add_socket("user:pleroma_chat", user)
|
||||||
|
@ -173,7 +173,7 @@ test "it sends chat messages to the 'user' stream", %{user: user} do
|
||||||
{:ok, create_activity} = CommonAPI.post_chat_message(other_user, user, "hey cirno")
|
{:ok, create_activity} = CommonAPI.post_chat_message(other_user, user, "hey cirno")
|
||||||
object = Object.normalize(create_activity, false)
|
object = Object.normalize(create_activity, false)
|
||||||
chat = Chat.get(user.id, other_user.ap_id)
|
chat = Chat.get(user.id, other_user.ap_id)
|
||||||
cm_ref = ChatMessageReference.for_chat_and_object(chat, object)
|
cm_ref = MessageReference.for_chat_and_object(chat, object)
|
||||||
cm_ref = %{cm_ref | chat: chat, object: object}
|
cm_ref = %{cm_ref | chat: chat, object: object}
|
||||||
|
|
||||||
Streamer.get_topic_and_add_socket("user", user)
|
Streamer.get_topic_and_add_socket("user", user)
|
||||||
|
|
Loading…
Reference in a new issue