module PluginPriorityHandlerDispatch
Public Instance Methods
Source
# File plugins/url.rb, line 49 def dispatch(event, msg = nil, *arguments) return super unless event == :message && msg return super if Url.skip_deferred_preview?(msg, bot: msg.bot) handlers = find(event, msg) return super if handlers.nil? || handlers.empty? bot = msg.bot priority_map = PluginPriority.handler_map_for(bot) deferred, immediate = handlers.partition do |handler| (priority_map[handler.object_id] || PluginPriority::DEFAULT) <= PluginPriority::MIN end return super if deferred.empty? if immediate.empty? return super if Url.skip_deferred_preview?(msg, bot: bot) return run_handlers(deferred, event, msg, arguments) end threads = run_handlers(immediate, event, msg, arguments) threads.each(&:join) return if Url.skip_deferred_preview?(msg, bot: bot) run_handlers(deferred, event, msg, arguments) end
Calls superclass method