mirror of
https://akkoma.dev/AkkomaGang/akkoma.git
synced 2024-11-10 18:17:55 +00:00
Merge branch 'issue/1880' into 'develop'
[#1880] fixed delete `Like` activity in remove user See merge request pleroma/pleroma!2725
This commit is contained in:
commit
8be0c04b40
|
@ -209,14 +209,20 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do
|
|||
{:ok, object}
|
||||
end
|
||||
|
||||
def handle_undoing(%{data: %{"type" => "Like"}} = object) do
|
||||
with %Object{} = liked_object <- Object.get_by_ap_id(object.data["object"]),
|
||||
{:ok, _} <- Utils.remove_like_from_object(object, liked_object),
|
||||
{:ok, _} <- Repo.delete(object) do
|
||||
:ok
|
||||
defp undo_like(nil, object), do: delete_object(object)
|
||||
|
||||
defp undo_like(%Object{} = liked_object, object) do
|
||||
with {:ok, _} <- Utils.remove_like_from_object(object, liked_object) do
|
||||
delete_object(object)
|
||||
end
|
||||
end
|
||||
|
||||
def handle_undoing(%{data: %{"type" => "Like"}} = object) do
|
||||
object.data["object"]
|
||||
|> Object.get_by_ap_id()
|
||||
|> undo_like(object)
|
||||
end
|
||||
|
||||
def handle_undoing(%{data: %{"type" => "EmojiReact"}} = object) do
|
||||
with %Object{} = reacted_object <- Object.get_by_ap_id(object.data["object"]),
|
||||
{:ok, _} <- Utils.remove_emoji_reaction_from_object(object, reacted_object),
|
||||
|
@ -246,6 +252,11 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do
|
|||
|
||||
def handle_undoing(object), do: {:error, ["don't know how to handle", object]}
|
||||
|
||||
@spec delete_object(Object.t()) :: :ok | {:error, Ecto.Changeset.t()}
|
||||
defp delete_object(object) do
|
||||
with {:ok, _} <- Repo.delete(object), do: :ok
|
||||
end
|
||||
|
||||
defp send_notifications(meta) do
|
||||
Keyword.get(meta, :notifications, [])
|
||||
|> Enum.each(fn notification ->
|
||||
|
|
|
@ -110,7 +110,23 @@ defmodule Mix.Tasks.Pleroma.UserTest do
|
|||
|
||||
test "a remote user's create activity is deleted when the object has been pruned" do
|
||||
user = insert(:user)
|
||||
user2 = insert(:user)
|
||||
|
||||
{:ok, post} = CommonAPI.post(user, %{status: "uguu"})
|
||||
{:ok, post2} = CommonAPI.post(user2, %{status: "test"})
|
||||
obj = Object.normalize(post2)
|
||||
|
||||
{:ok, like_object, meta} = Pleroma.Web.ActivityPub.Builder.like(user, obj)
|
||||
|
||||
{:ok, like_activity, _meta} =
|
||||
Pleroma.Web.ActivityPub.Pipeline.common_pipeline(
|
||||
like_object,
|
||||
Keyword.put(meta, :local, true)
|
||||
)
|
||||
|
||||
like_activity.data["object"]
|
||||
|> Pleroma.Object.get_by_ap_id()
|
||||
|> Repo.delete()
|
||||
|
||||
clear_config([:instance, :federating], true)
|
||||
|
||||
|
@ -127,6 +143,7 @@ defmodule Mix.Tasks.Pleroma.UserTest do
|
|||
assert %{deactivated: true} = User.get_by_nickname(user.nickname)
|
||||
|
||||
assert called(Pleroma.Web.Federator.publish(:_))
|
||||
refute Pleroma.Repo.get(Pleroma.Activity, like_activity.id)
|
||||
end
|
||||
|
||||
refute Activity.get_by_id(post.id)
|
||||
|
|
Loading…
Reference in a new issue