Method: Fancybox2::Module::Base#on_action

Defined in:
lib/fancybox2/module/base.rb

#on_action(action, callback = nil, &block) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/fancybox2/module/base.rb', line 68

def on_action(action, callback = nil, &block)
  topic = topic_for source: :core, action: action
  mqtt_client.add_topic_callback topic do |packet|
    # :nocov:
    payload = packet.payload
    # Try to parse payload as JSON. Rescue with original payload in case of error
    packet.payload = JSON.parse(payload) rescue payload
    if block_given?
      block.call packet
    elsif callback && callback.is_a?(Proc)
      callback.call packet
    end
    # :nocov:
  end
end