},
%{
group: :pleroma,
- key: Pleroma.ActivityExpiration,
+ key: Pleroma.Workers.PurgeExpiredActivity,
type: :group,
- description: "Expired activity settings",
+ description: "Expired activities settings",
children: [
%{
key: :enabled,
type: :boolean,
- description: "Whether expired activities will be sent to the job queue to be deleted"
+ description: "Enables expired activities addition & deletion"
}
]
},
require Logger
alias Pleroma.Config
- @type config_namespace() :: [atom()]
+ @type config_namespace() :: atom() | [atom()]
@type config_map() :: {config_namespace(), config_namespace(), String.t()}
@mrf_config_map [
check_media_proxy_whitelist_config()
check_welcome_message_config()
check_gun_pool_options()
+ check_activity_expiration_config()
end
def check_welcome_message_config do
Config.put(:pools, updated_config)
end
end
+
+ @spec check_activity_expiration_config() :: :ok | nil
+ def check_activity_expiration_config do
+ warning_preface = """
+ !!!DEPRECATION WARNING!!!
+ Your config is using old namespace for activity expiration configuration. Setting should work for now, but you are advised to change to new namespace to prevent possible issues later:
+ """
+
+ move_namespace_and_warn(
+ [
+ {Pleroma.ActivityExpiration, Pleroma.Workers.PurgeExpiredActivity,
+ "\n* `config :pleroma, Pleroma.ActivityExpiration` is now `config :pleroma, Pleroma.Workers.PurgeExpiredActivity`"}
+ ],
+ warning_preface
+ )
+ end
end
import Ecto.Query
+ alias Pleroma.Activity
+
def enqueue(args) do
with true <- enabled?(),
args when is_map(args) <- validate_expires_at(args) do
@impl true
def perform(%Oban.Job{args: %{"activity_id" => id}}) do
- with %Pleroma.Activity{} = activity <- find_activity(id),
+ with %Activity{} = activity <- find_activity(id),
%Pleroma.User{} = user <- find_user(activity.object.data["actor"]),
false <- pinned_by_actor?(activity, user) do
Pleroma.Web.CommonAPI.delete(activity.id, user)
end
defp find_activity(id) do
- with nil <- Pleroma.Activity.get_by_id_with_object(id) do
+ with nil <- Activity.get_by_id_with_object(id) do
{:error, :activity_not_found}
end
end
end
defp pinned_by_actor?(activity, user) do
- with true <- Pleroma.Activity.pinned_by_actor?(activity, user) do
+ with true <- Activity.pinned_by_actor?(activity, user) do
:pinned_by_actor
end
end
--- /dev/null
+defmodule Pleroma.Repo.Migrations.RenameActivityExpirationSetting do
+ use Ecto.Migration
+
+ def change do
+ config = Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: Pleroma.ActivityExpiration})
+
+ if config do
+ config
+ |> Ecto.Changeset.change(key: Pleroma.Workers.PurgeExpiredActivity)
+ |> Pleroma.Repo.update()
+ end
+ end
+end