Fix objects.
authorlain <lain@soykaf.club>
Sun, 27 Jan 2019 20:03:15 +0000 (21:03 +0100)
committerlain <lain@soykaf.club>
Sun, 27 Jan 2019 20:03:15 +0000 (21:03 +0100)
lib/pleroma/spc_fixes/spc_fixes.ex
test/spc_fixes_test.exs

index 41cf56fdd60925a696df1fec4dedde2e4ed68650..86bbb7f6f74ab30cebc76aec5e49fe1c04245a14 100644 (file)
@@ -5,6 +5,7 @@
 alias Pleroma.Repo
 alias Pleroma.User
 alias Pleroma.Activity
+alias Pleroma.Object
 import Ecto.Query
 
 defmodule Pleroma.SpcFixes do
@@ -87,6 +88,26 @@ defmodule Pleroma.SpcFixes do
         )
 
       Repo.update_all(query, [])
+
+      # Fix objects
+      query =
+        from(a in Object,
+          where: fragment("?->>'actor' = ?", a.data, ^mapping[user.ap_id]),
+          update: [
+            set: [
+              data:
+                fragment(
+                  "jsonb_set(jsonb_set(?, '{actor}', ?), '{to}', (?->'to')::jsonb || ?)",
+                  a.data,
+                  ^user.ap_id,
+                  a.data,
+                  ^[user.follower_address]
+                )
+            ]
+          ]
+        )
+
+      Repo.update_all(query, [])
     end)
   end
 end
index 76c081248ed7fce64c3154d71ba9586b4a013972..67ab54ccf7e3a6a34f09d97789698d8ac388b8dc 100644 (file)
@@ -11,6 +11,7 @@ defmodule Pleroma.SpcFixesTest do
   alias Pleroma.User
   alias Pleroma.Activity
   alias Pleroma.Repo
+  alias Pleroma.Object
 
   import Pleroma.Factory
 
@@ -62,5 +63,10 @@ defmodule Pleroma.SpcFixesTest do
     assert activity.data["actor"] == user.ap_id
     assert user.follower_address in activity.recipients
     assert user.follower_address in activity.data["to"]
+
+    object = Object.get_by_ap_id(activity.data["object"]["id"])
+
+    assert object.data["actor"] == user.ap_id
+    assert user.follower_address in object.data["to"]
   end
 end