summaryrefslogtreecommitdiff
path: root/lib/pleroma/web/common_api.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pleroma/web/common_api.ex')
-rw-r--r--lib/pleroma/web/common_api.ex31
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/pleroma/web/common_api.ex b/lib/pleroma/web/common_api.ex
index e59254791..4b5dc1261 100644
--- a/lib/pleroma/web/common_api.ex
+++ b/lib/pleroma/web/common_api.ex
@@ -264,6 +264,18 @@ defmodule Pleroma.Web.CommonAPI do
end
end
+ # postprocess the close poll
+ #
+ def close_poll(activity_id) do
+ with %Activity{} = activity <- Activity.get_by_id(activity_id),
+ %Object{} = object <- Object.normalize(activity),
+ {:ok, poll, _} <- Builder.close_poll(activity, object),
+ meta <- [local: true, do_not_federate: true],
+ {:ok, activity, _} <- Pipeline.common_pipeline(poll, meta) do
+ {:ok, activity}
+ end
+ end
+
def react_with_emoji(id, user, emoji) do
with %Activity{} = activity <- Activity.get_by_id(id),
object <- Object.normalize(activity),
@@ -411,6 +423,25 @@ defmodule Pleroma.Web.CommonAPI do
end
end
+ def postprocess(%Activity{} = activity) do
+ case Object.normalize(activity) do
+ %Object{data: %{"type" => "Question", "closed" => closed_at}} ->
+ Pleroma.Workers.PollExpirationNotify.enqueue(%{
+ activity_id: activity.id,
+ closed_at:
+ Timex.shift(
+ Timex.parse!(closed_at, "{ISO:Extended:Z}"),
+ minutes: 1
+ )
+ })
+
+ _ ->
+ activity
+ end
+
+ activity
+ end
+
def pin(id, %{ap_id: user_ap_id} = user) do
with %Activity{
actor: ^user_ap_id,