Procházet zdrojové kódy

Merge branch 'improve_upgrade_user_from_ap_id' into 'develop'

Improve Transmogrifier.upgrade_user_from_ap_id/2

See merge request pleroma/pleroma!1019
tags/v1.1.4
lambda před 5 roky
rodič
revize
e19590c93f
4 změnil soubory, kde provedl 11 přidání a 21 odebrání
  1. +1
    -0
      config/config.exs
  2. +2
    -0
      docs/config.md
  3. +8
    -18
      lib/pleroma/web/activity_pub/transmogrifier.ex
  4. +0
    -3
      test/web/activity_pub/transmogrifier_test.exs

+ 1
- 0
config/config.exs Zobrazit soubor

@@ -368,6 +368,7 @@ config :pleroma_job_queue, :queues,
federator_incoming: 50,
federator_outgoing: 50,
mailer: 10,
transmogrifier: 20,
scheduled_activities: 10

config :pleroma, :fetch_initial_posts,


+ 2
- 0
docs/config.md Zobrazit soubor

@@ -314,9 +314,11 @@ curl "http://localhost:4000/api/pleroma/admin/invite_token?admin_token=somerando
[Pleroma Job Queue](https://git.pleroma.social/pleroma/pleroma_job_queue) configuration: a list of queues with maximum concurrent jobs.

Pleroma has the following queues:

* `federator_outgoing` - Outgoing federation
* `federator_incoming` - Incoming federation
* `mailer` - Email sender, see [`Pleroma.Mailer`](#pleroma-mailer)
* `transmogrifier` - Transmogrifier
* `scheduled_activities` - Scheduled activities, see [`Pleroma.ScheduledActivities`](#pleromascheduledactivity)

Example:


+ 8
- 18
lib/pleroma/web/activity_pub/transmogrifier.ex Zobrazit soubor

@@ -954,7 +954,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do

defp strip_internal_tags(object), do: object

defp user_upgrade_task(user) do
def perform(:user_upgrade, user) do
# we pass a fake user so that the followers collection is stripped away
old_follower_address = User.ap_followers(%User{nickname: user.nickname})

@@ -999,28 +999,18 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
Repo.update_all(q, [])
end

def upgrade_user_from_ap_id(ap_id, async \\ true) do
def upgrade_user_from_ap_id(ap_id) do
with %User{local: false} = user <- User.get_by_ap_id(ap_id),
{:ok, data} <- ActivityPub.fetch_and_prepare_user_from_ap_id(ap_id) do
already_ap = User.ap_enabled?(user)

{:ok, user} =
User.upgrade_changeset(user, data)
|> Repo.update()

if !already_ap do
# This could potentially take a long time, do it in the background
if async do
Task.start(fn ->
user_upgrade_task(user)
end)
else
user_upgrade_task(user)
end
{:ok, data} <- ActivityPub.fetch_and_prepare_user_from_ap_id(ap_id),
already_ap <- User.ap_enabled?(user),
{:ok, user} <- user |> User.upgrade_changeset(data) |> User.update_and_set_cache() do
unless already_ap do
PleromaJobQueue.enqueue(:transmogrifier, __MODULE__, [:user_upgrade, user])
end

{:ok, user}
else
%User{} = user -> {:ok, user}
e -> e
end
end


+ 0
- 3
test/web/activity_pub/transmogrifier_test.exs Zobrazit soubor

@@ -1028,9 +1028,6 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
assert user.info.note_count == 1
assert user.follower_address == "https://niu.moe/users/rye/followers"

# Wait for the background task
:timer.sleep(1000)

user = User.get_by_id(user.id)
assert user.info.note_count == 1



Načítá se…
Zrušit
Uložit