Class: SlackBot::Interaction
- Inherits:
-
Object
- Object
- SlackBot::Interaction
- Includes:
- Concerns::ViewKlass
- Defined in:
- lib/slack_bot/interaction.rb
Defined Under Namespace
Classes: SlackViewsReply
Instance Attribute Summary collapse
-
#callback ⇒ Object
readonly
Returns the value of attribute callback.
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#current_user ⇒ Object
readonly
Returns the value of attribute current_user.
-
#params ⇒ Object
readonly
Returns the value of attribute params.
Class Method Summary collapse
- .build_view_reply(response:, callback:, payload:, error_class:) ⇒ Object
- .modal_payload(callback, view) ⇒ Object
- .open_modal(callback:, trigger_id:, view:) ⇒ Object
- .persist_view_id(callback, view_id) ⇒ Object
- .publish_payload(callback, metadata, view) ⇒ Object
- .publish_view(user_id:, view:, callback: nil, metadata: nil) ⇒ Object
- .update_modal(callback:, view_id:, view:) ⇒ Object
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(current_user: nil, params: nil, callback: nil, config: nil) ⇒ Interaction
constructor
A new instance of Interaction.
Methods included from Concerns::ViewKlass
Constructor Details
#initialize(current_user: nil, params: nil, callback: nil, config: nil) ⇒ Interaction
Returns a new instance of Interaction.
30 31 32 33 34 35 |
# File 'lib/slack_bot/interaction.rb', line 30 def initialize(current_user: nil, params: nil, callback: nil, config: nil) @current_user = current_user @params = params @callback = callback @config = config || SlackBot::Config.current_instance end |
Instance Attribute Details
#callback ⇒ Object (readonly)
Returns the value of attribute callback.
29 30 31 |
# File 'lib/slack_bot/interaction.rb', line 29 def callback @callback end |
#config ⇒ Object (readonly)
Returns the value of attribute config.
29 30 31 |
# File 'lib/slack_bot/interaction.rb', line 29 def config @config end |
#current_user ⇒ Object (readonly)
Returns the value of attribute current_user.
29 30 31 |
# File 'lib/slack_bot/interaction.rb', line 29 def current_user @current_user end |
#params ⇒ Object (readonly)
Returns the value of attribute params.
29 30 31 |
# File 'lib/slack_bot/interaction.rb', line 29 def params @params end |
Class Method Details
.build_view_reply(response:, callback:, payload:, error_class:) ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/slack_bot/interaction.rb', line 51 def self.build_view_reply(response:, callback:, payload:, error_class:) raise error_class.new(response.error, data: response.data, payload: payload) unless response.ok? view_id = response.data.dig("view", "id") persist_view_id(callback, view_id) SlackViewsReply.new(callback&.id, view_id) end |
.modal_payload(callback, view) ⇒ Object
41 42 43 |
# File 'lib/slack_bot/interaction.rb', line 41 def self.modal_payload(callback, view) view.merge(type: "modal", callback_id: callback&.id) end |
.open_modal(callback:, trigger_id:, view:) ⇒ Object
12 13 14 15 16 |
# File 'lib/slack_bot/interaction.rb', line 12 def self.open_modal(callback:, trigger_id:, view:) view = modal_payload(callback, view) response = SlackBot::ApiClient.new.views_open(trigger_id: trigger_id, view: view) build_view_reply(response: response, callback: callback, payload: view, error_class: SlackBot::Errors::OpenModalError) end |
.persist_view_id(callback, view_id) ⇒ Object
59 60 61 62 63 64 |
# File 'lib/slack_bot/interaction.rb', line 59 def self.persist_view_id(callback, view_id) return unless callback.present? && view_id.present? callback.view_id = view_id callback.save end |
.publish_payload(callback, metadata, view) ⇒ Object
45 46 47 48 49 |
# File 'lib/slack_bot/interaction.rb', line 45 def self.publish_payload(callback, , view) view = view.merge(callback_id: callback.id) if callback.present? view = view.merge(private_metadata: ) if .present? view end |
.publish_view(user_id:, view:, callback: nil, metadata: nil) ⇒ Object
24 25 26 27 |
# File 'lib/slack_bot/interaction.rb', line 24 def self.publish_view(user_id:, view:, callback: nil, metadata: nil) response = SlackBot::ApiClient.new.views_publish(user_id: user_id, view: publish_payload(callback, , view)) build_view_reply(response: response, callback: callback, payload: view, error_class: SlackBot::Errors::PublishViewError) end |
.update_modal(callback:, view_id:, view:) ⇒ Object
18 19 20 21 22 |
# File 'lib/slack_bot/interaction.rb', line 18 def self.update_modal(callback:, view_id:, view:) view = modal_payload(callback, view) response = SlackBot::ApiClient.new.views_update(view_id: view_id, view: view) build_view_reply(response: response, callback: callback, payload: view, error_class: SlackBot::Errors::UpdateModalError) end |
Instance Method Details
#call ⇒ Object
37 38 39 |
# File 'lib/slack_bot/interaction.rb', line 37 def call nil end |