diff options
author | Maksim Pechnikov <parallel588@gmail.com> | 2020-12-07 21:30:37 +0300 |
---|---|---|
committer | Maksim Pechnikov <parallel588@gmail.com> | 2020-12-07 21:30:37 +0300 |
commit | 572e03c0cc019cfebe06e834b762ab37af19e340 (patch) | |
tree | 07de23e6668775be55390b198e62abac1a7b694c /lib/pleroma/web/common_api.ex | |
parent | ed76323776f2506cfefbe78c369fdb7ccfe3b650 (diff) | |
download | pleroma-issue/2315-poll-notify.tar.gz |
added 'ClosePoll' activityissue/2315-poll-notify
Diffstat (limited to 'lib/pleroma/web/common_api.ex')
-rw-r--r-- | lib/pleroma/web/common_api.ex | 31 |
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, |