aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2019-05-13 01:58:30 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2019-05-13 19:36:00 +0000
commit32d4630c9ca1c89e655b37b3b939d728f569dc9f (patch)
tree5ef7c64c059a59364cac82d6007068d32d11d893 /lib
parentb14a314ce7e8f2a8803c69329978e26939a40ee4 (diff)
downloadpleroma-32d4630c9ca1c89e655b37b3b939d728f569dc9f.tar.gz
user: move initial post fetching to job queue
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/user.ex31
1 files changed, 18 insertions, 13 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index 474de9ba5..a79da4dd8 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -552,8 +552,7 @@ defmodule Pleroma.User do
with [_nick, _domain] <- String.split(nickname, "@"),
{:ok, user} <- fetch_by_nickname(nickname) do
if Pleroma.Config.get([:fetch_initial_posts, :enabled]) do
- # TODO turn into job
- {:ok, _} = Task.start(__MODULE__, :fetch_initial_posts, [user])
+ fetch_initial_posts(user)
end
{:ok, user}
@@ -564,15 +563,8 @@ defmodule Pleroma.User do
end
@doc "Fetch some posts when the user has just been federated with"
- def fetch_initial_posts(user) do
- pages = Pleroma.Config.get!([:fetch_initial_posts, :pages])
-
- Enum.each(
- # Insert all the posts in reverse order, so they're in the right order on the timeline
- Enum.reverse(Utils.fetch_ordered_collection(user.info.source_data["outbox"], pages)),
- &Pleroma.Web.Federator.incoming_ap_doc/1
- )
- end
+ def fetch_initial_posts(user),
+ do: PleromaJobQueue.enqueue(:background, __MODULE__, [:fetch_initial_posts, user])
@spec get_followers_query(User.t(), pos_integer() | nil) :: Ecto.Query.t()
def get_followers_query(%User{} = user, nil) do
@@ -1077,6 +1069,19 @@ defmodule Pleroma.User do
delete_user_activities(user)
end
+ @spec perform(atom(), User.t()) :: {:ok, User.t()}
+ def perform(:fetch_initial_posts, %User{} = user) do
+ pages = Pleroma.Config.get!([:fetch_initial_posts, :pages])
+
+ Enum.each(
+ # Insert all the posts in reverse order, so they're in the right order on the timeline
+ Enum.reverse(Utils.fetch_ordered_collection(user.info.source_data["outbox"], pages)),
+ &Pleroma.Web.Federator.incoming_ap_doc/1
+ )
+
+ {:ok, user}
+ end
+
def delete_user_activities(%User{ap_id: ap_id} = user) do
stream =
ap_id
@@ -1130,8 +1135,8 @@ defmodule Pleroma.User do
resp = fetch_by_ap_id(ap_id)
if should_fetch_initial do
- with {:ok, %User{} = user} = resp do
- {:ok, _} = Task.start(__MODULE__, :fetch_initial_posts, [user])
+ with {:ok, %User{} = user} <- resp do
+ fetch_initial_posts(user)
end
end