Module: AdHonorem::HookingConcern::ClassMethods

Defined in:
lib/adhonorem/concerns/hooking_concern.rb

Overview

:nodoc:

Constant Summary collapse

@@hooks =

After all badges loading, @@hooks will look like {

master_a_weapon: {
  'ParameteredBadge' => [:checker_one, :checker_two],
  'LegacyBadge' => [:a_checker],
},
other_event: {
  'OtherBadgeResponder' => [:other_checker]
}

}

{}

Instance Method Summary collapse

Instance Method Details

#dispatch(user, event, params = nil) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/adhonorem/concerns/hooking_concern.rb', line 19

def dispatch(user, event, params = nil)
  params ||= {}
  result = {}

  @@hooks[event] ||= {}
  @@hooks[event].each do |responder, registered_checkers|
    badge = find_by(klass: responder).set_context(user)
    registered_checkers.each do |checker|
      res = badge.trigger(checker, params)
      result[res] ||= []
      result[res] << "#{responder}##{checker}"
    end
  end

  result
end