deprecation warning

changed namespace for activity expiration configuration
This commit is contained in:
Alexander Strizhakov 2020-08-25 09:10:45 +03:00 committed by rinpatch
parent de4c935071
commit 629a8de9cb
4 changed files with 39 additions and 7 deletions

View file

@ -2472,14 +2472,14 @@
},
%{
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"
}
]
},

View file

@ -8,7 +8,7 @@ defmodule Pleroma.Config.DeprecationWarnings do
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 [
@ -57,6 +57,7 @@ def warn do
check_media_proxy_whitelist_config()
check_welcome_message_config()
check_gun_pool_options()
check_activity_expiration_config()
end
def check_welcome_message_config do
@ -158,4 +159,20 @@ def check_gun_pool_options 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

View file

@ -7,6 +7,8 @@ defmodule Pleroma.Workers.PurgeExpiredActivity do
import Ecto.Query
alias Pleroma.Activity
def enqueue(args) do
with true <- enabled?(),
args when is_map(args) <- validate_expires_at(args) do
@ -20,7 +22,7 @@ def enqueue(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)
@ -53,7 +55,7 @@ defp validate_expires_at(args) do
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
@ -65,7 +67,7 @@ defp find_user(ap_id) do
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

View file

@ -0,0 +1,13 @@
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