discourse/config/initializers/012-web_hook_events.rb
Sam Saffron 30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00

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