configurable lifetime for ephemeral activities
authorAlexander Strizhakov <alex.strizhakov@gmail.com>
Mon, 7 Sep 2020 17:57:38 +0000 (20:57 +0300)
committerrinpatch <rinpatch@sdf.org>
Thu, 10 Sep 2020 18:51:59 +0000 (21:51 +0300)
config/config.exs
config/description.exs
docs/configuration/cheatsheet.md
lib/pleroma/workers/purge_expired_activity.ex
test/web/mastodon_api/controllers/status_controller_test.exs

index d975db31e363c6a6b703ced7c140c825306893d5..88c47fd032c382b9e92a021dcccdd4c5bbdba869 100644 (file)
@@ -654,7 +654,7 @@ config :pleroma, :rate_limit,
   account_confirmation_resend: {8_640_000, 5},
   ap_routes: {60_000, 15}
 
-config :pleroma, Pleroma.Workers.PurgeExpiredActivity, enabled: true
+config :pleroma, Pleroma.Workers.PurgeExpiredActivity, enabled: true, min_lifetime: 600
 
 config :pleroma, Pleroma.Plugs.RemoteIp, enabled: true
 
index 1253944de67b7253380ee90e7522d6e7f4ebc07a..82c7bc6a7d0c98a45b43d8323d120ed490c1320e 100644 (file)
@@ -2480,6 +2480,12 @@ config :pleroma, :config_description, [
         key: :enabled,
         type: :boolean,
         description: "Enables expired activities addition & deletion"
+      },
+      %{
+        key: :min_lifetime,
+        type: :integer,
+        description: "Minimum lifetime for ephemeral activity (in seconds)",
+        suggestions: [600]
       }
     ]
   },
index d0bebbd4521e13c13683d441664d0a3ae0758265..8f242538421bb730cd1fae18f5ab4fd54ff42b9c 100644 (file)
@@ -1091,3 +1091,16 @@ config :pleroma, :frontends,
 ```
 
 This would serve the frontend from the the folder at `$instance_static/frontends/pleroma/stable`. You have to copy the frontend into this folder yourself. You can choose the name and ref any way you like, but they will be used by mix tasks to automate installation in the future, the name referring to the project and the ref referring to a commit.
+
+## Ephemeral activities
+
+Settings to enable and configure expiration for ephemeral activities
+
+* `:enabled` - enables ephemeral activities creation
+* `:min_lifetime` - minimum lifetime for ephemeral activities (in seconds). Default: 10 minutes.
+
+Example:
+
+```elixir
+  config :pleroma, Pleroma.Workers.PurgeExpiredActivity, enabled: true, min_lifetime: 600
+```
index f981eda8eca9573b6dc31dd4853d276a49cce573..ffcb89dc374a29bb249ad2cc10d14aa52ee71f83 100644 (file)
@@ -77,6 +77,7 @@ defmodule Pleroma.Workers.PurgeExpiredActivity do
   def expires_late_enough?(scheduled_at) do
     now = DateTime.utc_now()
     diff = DateTime.diff(scheduled_at, now, :millisecond)
-    diff > :timer.hours(1)
+    min_lifetime = Pleroma.Config.get([__MODULE__, :min_lifetime], 600)
+    diff > :timer.seconds(min_lifetime)
   end
 end
index 82ea7389869b965fc6371640e2ffb6eb577b4e87..633a25e506b1ee3cdf779bcf81d8423956966424 100644 (file)
@@ -129,8 +129,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do
     test "it fails to create a status if `expires_in` is less or equal than an hour", %{
       conn: conn
     } do
-      # 1 hour
-      expires_in = 60 * 60
+      # 1 minute
+      expires_in = 1 * 60
 
       assert %{"error" => "Expiry date is too soon"} =
                conn
@@ -141,8 +141,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do
                })
                |> json_response_and_validate_schema(422)
 
-      # 30 minutes
-      expires_in = 30 * 60
+      # 5 minutes
+      expires_in = 5 * 60
 
       assert %{"error" => "Expiry date is too soon"} =
                conn