discourse/config/initializers/012-web_hook_events.rb

109 lines
2.6 KiB
Ruby

# frozen_string_literal: true
%i(
topic_recovered
).each do |event|
DiscourseEvent.on(event) do |topic, _|
WebHook.enqueue_topic_hooks(event, topic)
end
end
DiscourseEvent.on(:topic_status_updated) do |topic, status|
WebHook.enqueue_topic_hooks("topic_#{status}_status_updated", topic)
end
DiscourseEvent.on(:topic_created) do |topic, _, _|
WebHook.enqueue_topic_hooks(:topic_created, topic)
end
%i(
post_created
post_recovered
).each do |event|
DiscourseEvent.on(event) do |post, _, _|
WebHook.enqueue_post_hooks(event, post)
end
end
DiscourseEvent.on(:post_edited) do |post, topic_changed|
if post.topic
WebHook.enqueue_post_hooks(:post_edited, post)
if post.is_first_post? && topic_changed
WebHook.enqueue_topic_hooks(:topic_edited, post.topic)
end
end
end
%i(
user_logged_out
user_created
user_logged_in
user_approved
user_updated
).each do |event|
DiscourseEvent.on(event) do |user|
WebHook.enqueue_object_hooks(:user, user, event)
end
end
%i(
group_created
group_updated
).each do |event|
DiscourseEvent.on(event) do |group|
WebHook.enqueue_object_hooks(:group, group, event)
end
end
%i(
category_created
category_updated
).each do |event|
DiscourseEvent.on(event) do |category|
WebHook.enqueue_object_hooks(:category, category, event)
end
end
%i(
tag_created
tag_updated
).each do |event|
DiscourseEvent.on(event) do |tag|
WebHook.enqueue_object_hooks(:tag, tag, event, TagSerializer)
end
end
%i(
flag_created
flag_agreed
flag_disagreed
flag_deferred
).each do |event|
DiscourseEvent.on(event) do |flag|
WebHook.enqueue_object_hooks(:flag, flag, event)
end
end
DiscourseEvent.on(:reviewable_created) do |reviewable|
WebHook.enqueue_object_hooks(:reviewable, reviewable, :reviewable_created, reviewable.serializer)
# TODO: Backwards compatibility for Queued Post webhooks. Remve in favor of Reviewable API
if reviewable.is_a?(ReviewableQueuedPost)
WebHook.enqueue_object_hooks(:queued_post, reviewable, :queued_post_created, reviewable.serializer)
end
end
DiscourseEvent.on(:reviewable_transitioned_to) do |status, reviewable|
WebHook.enqueue_object_hooks(:reviewable, reviewable, :reviewable_transitioned_to, reviewable.serializer)
# TODO: Backwards compatibility for Queued Post webhooks. Remve in favor of Reviewable API
if reviewable.is_a?(ReviewableQueuedPost)
if reviewable.approved?
WebHook.enqueue_object_hooks(:queued_post, reviewable, :approved_post, QueuedPostSerializer)
elsif reviewable.rejected?
WebHook.enqueue_object_hooks(:queued_post, reviewable, :rejected_post, QueuedPostSerializer)
end
end
end