Merge pull request 'Manually define PATH for Arch Linux users in systemd unit' (...
[akkoma] / lib / pleroma / workers / attachments_cleanup_worker.ex
index 8deeabda09ae6f6e31df6d7882792f452239a49f..f5090dae737b2131d8318ce23e0a58718fe13704 100644 (file)
@@ -1,5 +1,5 @@
 # Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Workers.AttachmentsCleanupWorker do
@@ -11,43 +11,38 @@ defmodule Pleroma.Workers.AttachmentsCleanupWorker do
   use Pleroma.Workers.WorkerHelper, queue: "attachments_cleanup"
 
   @impl Oban.Worker
-  def perform(
-        %{
+  def perform(%Job{
+        args: %{
           "op" => "cleanup_attachments",
           "object" => %{"data" => %{"attachment" => [_ | _] = attachments, "actor" => actor}}
-        },
-        _job
-      ) do
-    attachments
-    |> Enum.flat_map(fn item -> Enum.map(item["url"], & &1["href"]) end)
-    |> fetch_objects
-    |> prepare_objects(actor, Enum.map(attachments, & &1["name"]))
-    |> filter_objects
-    |> do_clean
+        }
+      }) do
+    if Pleroma.Config.get([:instance, :cleanup_attachments], false) do
+      attachments
+      |> Enum.flat_map(fn item -> Enum.map(item["url"], & &1["href"]) end)
+      |> fetch_objects
+      |> prepare_objects(actor, Enum.map(attachments, & &1["name"]))
+      |> filter_objects
+      |> do_clean
+    end
 
     {:ok, :success}
   end
 
-  def perform(%{"op" => "cleanup_attachments", "object" => _object}, _job), do: {:ok, :skip}
+  def perform(%Job{args: %{"op" => "cleanup_attachments", "object" => _object}}), do: {:ok, :skip}
 
   defp do_clean({object_ids, attachment_urls}) do
     uploader = Pleroma.Config.get([Pleroma.Upload, :uploader])
 
-    prefix =
-      case Pleroma.Config.get([Pleroma.Upload, :base_url]) do
-        nil -> "media"
-        _ -> ""
-      end
-
     base_url =
       String.trim_trailing(
-        Pleroma.Config.get([Pleroma.Upload, :base_url], Pleroma.Web.base_url()),
+        Pleroma.Upload.base_url(),
         "/"
       )
 
     Enum.each(attachment_urls, fn href ->
       href
-      |> String.trim_leading("#{base_url}/#{prefix}")
+      |> String.trim_leading("#{base_url}")
       |> uploader.delete_file()
     end)