Module: SlackBot::GrapeHelpers::Interactions
- Included in:
- SlackBot::GrapeHelpers
- Defined in:
- lib/slack_bot/grape_helpers/interactions.rb
Instance Method Summary collapse
- #handle_block_actions_message(payload:, user:, params:) ⇒ Object
- #handle_block_actions_view(view:, user:, params:) ⇒ Object
- #route_interaction(payload:, user:, params:) ⇒ Object
- #validate_callback_user!(callback, user) ⇒ Object
Instance Method Details
#handle_block_actions_message(payload:, user:, params:) ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/slack_bot/grape_helpers/interactions.rb', line 19 def (payload:, user:, params:) action_id = payload.dig("actions", 0, "action_id") return false if action_id.blank? interaction_klass = config.find_block_action(action_id) raise SlackBot::Errors::BlockActionNotImplemented.new if interaction_klass.blank? interaction_klass.new(current_user: user, params: params, config: config).call end |
#handle_block_actions_view(view:, user:, params:) ⇒ Object
35 36 37 38 39 40 41 42 43 44 |
# File 'lib/slack_bot/grape_helpers/interactions.rb', line 35 def handle_block_actions_view(view:, user:, params:) callback = find_callback!(view: view, user: user) log_callback_check(callback, user) validate_callback_user!(callback, user) interaction_klass = callback_interaction_klass(callback) return false if interaction_klass.blank? interaction_klass.new(current_user: user, params: params, callback: callback, config: config).call end |
#route_interaction(payload:, user:, params:) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/slack_bot/grape_helpers/interactions.rb', line 4 def route_interaction(payload:, user:, params:) case payload["type"] when "view_submission" handle_block_actions_view(view: payload["view"], user: user, params: params) when "block_actions" if payload["view"].present? handle_block_actions_view(view: payload["view"], user: user, params: params) else (payload: payload, user: user, params: params) end else raise SlackBot::Errors::UnknownActionTypeError.new(payload["type"]) end end |
#validate_callback_user!(callback, user) ⇒ Object
29 30 31 32 33 |
# File 'lib/slack_bot/grape_helpers/interactions.rb', line 29 def validate_callback_user!(callback, user) if callback.user_id != user.id raise SlackBot::Errors::CallbackUserMismatchError.new("Callback user is not equal to action user") end end |