Class: DiscourseEvent
- Inherits:
-
Object
- Object
- DiscourseEvent
- Defined in:
- lib/discourse_event.rb
Overview
This is meant to be used by plugins to trigger and listen to events So we can execute code when things happen.
Class Method Summary collapse
- .all_off(event_name) ⇒ Object
-
.events ⇒ Object
Defaults to a hash where default values are empty sets.
- .off(event_name, &block) ⇒ Object
- .on(event_name, &block) ⇒ Object
- .trigger(event_name, *args, **kwargs) ⇒ Object
Class Method Details
.all_off(event_name) ⇒ Object
43 44 45 |
# File 'lib/discourse_event.rb', line 43 def self.all_off(event_name) events.delete(event_name) end |
.events ⇒ Object
Defaults to a hash where default values are empty sets.
7 8 9 |
# File 'lib/discourse_event.rb', line 7 def self.events @events ||= Hash.new { |hash, key| hash[key] = Set.new } end |
.off(event_name, &block) ⇒ Object
38 39 40 41 |
# File 'lib/discourse_event.rb', line 38 def self.off(event_name, &block) raise ArgumentError.new "DiscourseEvent.off must reference a block" if block.nil? events[event_name].delete(block) end |
.on(event_name, &block) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/discourse_event.rb', line 15 def self.on(event_name, &block) case event_name when :user_badge_removed Discourse.deprecate( "The :user_badge_removed event is deprecated. Please use :user_badge_revoked instead", since: "3.1.0.beta5", drop_from: "3.2.0.beta1", output_in_test: true, ) when :post_notification_alert Discourse.deprecate( "The :post_notification_alert event is deprecated. Please use :push_notification instead", since: "3.2.0.beta1", drop_from: "3.3.0.beta1", output_in_test: true, ) else # ignore end events[event_name] << block end |
.trigger(event_name, *args, **kwargs) ⇒ Object
11 12 13 |
# File 'lib/discourse_event.rb', line 11 def self.trigger(event_name, *args, **kwargs) events[event_name].each { |event| event.call(*args, **kwargs) } end |