diff options
author | rinpatch <rinpatch@sdf.org> | 2019-05-04 12:46:42 +0300 |
---|---|---|
committer | William Pitcock <nenolod@dereferenced.org> | 2019-05-07 19:33:22 +0000 |
commit | f841eb7cdb83afc444dfe260581b6be6e690a717 (patch) | |
tree | 63146e5aa7e818f7c7ab621dbeaecf6d945ef631 /lib | |
parent | 06947c91471fda6e774c5b6fc04720b87db2b1e6 (diff) | |
download | pleroma-f841eb7cdb83afc444dfe260581b6be6e690a717.tar.gz |
Preload bookmarks wherever the object is preloaded
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/activity.ex | 12 | ||||
-rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub.ex | 7 |
2 files changed, 16 insertions, 3 deletions
diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 73e63bb14..7845c264a 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -6,6 +6,7 @@ defmodule Pleroma.Activity do use Ecto.Schema alias Pleroma.Activity + alias Pleroma.Bookmark alias Pleroma.Notification alias Pleroma.Object alias Pleroma.Repo @@ -36,6 +37,7 @@ defmodule Pleroma.Activity do field(:actor, :string) field(:recipients, {:array, :string}, default: []) has_many(:notifications, Notification, on_delete: :delete_all) + has_many(:bookmarks, Bookmark, on_delete: :delete_all) # Attention: this is a fake relation, don't try to preload it blindly and expect it to work! # The foreign key is embedded in a jsonb field. @@ -71,6 +73,7 @@ defmodule Pleroma.Activity do ) ) |> preload([activity, object], object: object) + |> preload(:bookmarks) end def get_by_ap_id(ap_id) do @@ -102,7 +105,8 @@ defmodule Pleroma.Activity do activity.data, activity.data ), - preload: [object: o] + preload: [object: o], + preload: :bookmarks ) ) end @@ -122,7 +126,8 @@ defmodule Pleroma.Activity do activity.data, activity.data ), - preload: [object: o] + preload: [object: o], + preload: :bookmarks ) |> Repo.one() end @@ -200,7 +205,8 @@ defmodule Pleroma.Activity do activity.data, activity.data ), - preload: [object: o] + preload: [object: o], + preload: :bookmarks ) end diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 6c737d0a4..bd2544470 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -137,6 +137,13 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do activity end + activity = + if activity.data["type"] in ["Create", "Announce"] do + Repo.preload(activity, :bookmarks) + else + activity + end + Task.start(fn -> Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) end) |