FEATURE: Add support for user badge revocation webhook events (#21204)

Currently, only user badge grants emit webhook events. This change
extends the `user_badge` webhook to emit user badge revocation events.

A new `user_badge_revoked` event has been introduced instead of relying
on the existing `user_badge_removed` event. `user_badge_removed` emitted
just the `badge_id` and `user_id` which aren't helpful for generating a
meaningful webhook payload for revoked(deleted) user badges.

The new event emits  the user badge object.
This commit is contained in:
Selase Krakani
2023-04-24 20:36:40 +00:00
committed by GitHub
parent c03f83bbea
commit cdf1589a85
5 changed files with 64 additions and 8 deletions

View File

@ -48,7 +48,10 @@ class UserBadge < ActiveRecord::Base
Badge.decrement_counter "grant_count", self.badge_id
UserStat.update_distinct_badge_count self.user_id
UserBadge.update_featured_ranks! self.user_id
# TODO: Follow up with a deprecation notice for `user_badge_removed`
DiscourseEvent.trigger(:user_badge_removed, self.badge_id, self.user_id)
DiscourseEvent.trigger(:user_badge_revoked, user_badge: self)
end
def self.ensure_consistency!