Conversations: Add a function to 'import' old DMs.
This commit is contained in:
parent
289b8224ac
commit
fcf2f38d20
|
@ -72,4 +72,18 @@ def create_or_bump_for(activity) do
|
|||
e -> {:error, e}
|
||||
end
|
||||
end
|
||||
|
||||
@doc """
|
||||
This is only meant to be run by a mix task. It creates conversations/participations for all direct messages in the database.
|
||||
"""
|
||||
def bump_for_all_activities() do
|
||||
stream =
|
||||
Pleroma.Web.ActivityPub.ActivityPub.fetch_direct_messages_query()
|
||||
|> Repo.stream()
|
||||
|
||||
Repo.transaction(fn ->
|
||||
stream
|
||||
|> Enum.each(&create_or_bump_for/1)
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1061,4 +1061,10 @@ def contain_timeline(timeline, user) do
|
|||
contain_activity(activity, user)
|
||||
end)
|
||||
end
|
||||
|
||||
def fetch_direct_messages_query() do
|
||||
Activity
|
||||
|> restrict_type(%{"type" => "Create"})
|
||||
|> restrict_visibility(%{visibility: "direct"})
|
||||
end
|
||||
end
|
||||
|
|
|
@ -9,6 +9,24 @@ defmodule Pleroma.ConversationTest do
|
|||
|
||||
import Pleroma.Factory
|
||||
|
||||
test "it goes through old direct conversations" do
|
||||
user = insert(:user)
|
||||
other_user = insert(:user)
|
||||
|
||||
{:ok, _activity} =
|
||||
CommonAPI.post(user, %{"visibility" => "direct", "status" => "hey @#{other_user.nickname}"})
|
||||
|
||||
Repo.delete_all(Conversation)
|
||||
Repo.delete_all(Conversation.Participation)
|
||||
|
||||
refute Repo.one(Conversation)
|
||||
|
||||
Conversation.bump_for_all_activities()
|
||||
|
||||
assert Repo.one(Conversation)
|
||||
assert length(Repo.all(Conversation.Participation)) == 2
|
||||
end
|
||||
|
||||
test "it creates a conversation for given ap_id" do
|
||||
assert {:ok, %Conversation{} = conversation} =
|
||||
Conversation.create_for_ap_id("https://some_ap_id")
|
||||
|
|
Loading…
Reference in a new issue