logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

background_worker.ex (1662B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.Workers.BackgroundWorker do
  5. alias Pleroma.Instances.Instance
  6. alias Pleroma.User
  7. use Pleroma.Workers.WorkerHelper, queue: "background"
  8. @impl Oban.Worker
  9. def perform(%Job{args: %{"op" => "user_activation", "user_id" => user_id, "status" => status}}) do
  10. user = User.get_cached_by_id(user_id)
  11. User.perform(:set_activation_async, user, status)
  12. end
  13. def perform(%Job{args: %{"op" => "delete_user", "user_id" => user_id}}) do
  14. user = User.get_cached_by_id(user_id)
  15. User.perform(:delete, user)
  16. end
  17. def perform(%Job{args: %{"op" => "force_password_reset", "user_id" => user_id}}) do
  18. user = User.get_cached_by_id(user_id)
  19. User.perform(:force_password_reset, user)
  20. end
  21. def perform(%Job{args: %{"op" => op, "user_id" => user_id, "identifiers" => identifiers}})
  22. when op in ["blocks_import", "follow_import", "mutes_import"] do
  23. user = User.get_cached_by_id(user_id)
  24. {:ok, User.Import.perform(String.to_existing_atom(op), user, identifiers)}
  25. end
  26. def perform(%Job{
  27. args: %{"op" => "move_following", "origin_id" => origin_id, "target_id" => target_id}
  28. }) do
  29. origin = User.get_cached_by_id(origin_id)
  30. target = User.get_cached_by_id(target_id)
  31. Pleroma.FollowingRelationship.move_following(origin, target)
  32. end
  33. def perform(%Job{args: %{"op" => "delete_instance", "host" => host}}) do
  34. Instance.perform(:delete_instance, host)
  35. end
  36. @impl Oban.Worker
  37. def timeout(_job), do: :timer.seconds(900)
  38. end