|
|
|
@ -20,11 +20,11 @@ defmodule Pleroma.ActivityExpiration do
|
|
|
|
|
field(:scheduled_at, :naive_datetime)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def changeset(%ActivityExpiration{} = expiration, attrs) do
|
|
|
|
|
def changeset(%ActivityExpiration{} = expiration, attrs, validate_scheduled_at) do
|
|
|
|
|
expiration
|
|
|
|
|
|> cast(attrs, [:scheduled_at])
|
|
|
|
|
|> validate_required([:scheduled_at])
|
|
|
|
|
|> validate_scheduled_at()
|
|
|
|
|
|> validate_scheduled_at(validate_scheduled_at)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def get_by_activity_id(activity_id) do
|
|
|
|
@ -33,9 +33,9 @@ defmodule Pleroma.ActivityExpiration do
|
|
|
|
|
|> Repo.one()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def create(%Activity{} = activity, scheduled_at) do
|
|
|
|
|
def create(%Activity{} = activity, scheduled_at, validate_scheduled_at \\ true) do
|
|
|
|
|
%ActivityExpiration{activity_id: activity.id}
|
|
|
|
|
|> changeset(%{scheduled_at: scheduled_at})
|
|
|
|
|
|> changeset(%{scheduled_at: scheduled_at}, validate_scheduled_at)
|
|
|
|
|
|> Repo.insert()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
@ -49,7 +49,9 @@ defmodule Pleroma.ActivityExpiration do
|
|
|
|
|
|> Repo.all()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def validate_scheduled_at(changeset) do
|
|
|
|
|
def validate_scheduled_at(changeset, false), do: changeset
|
|
|
|
|
|
|
|
|
|
def validate_scheduled_at(changeset, true) do
|
|
|
|
|
validate_change(changeset, :scheduled_at, fn _, scheduled_at ->
|
|
|
|
|
if not expires_late_enough?(scheduled_at) do
|
|
|
|
|
[scheduled_at: "an ephemeral activity must live for at least one hour"]
|
|
|
|
|