Class: BlockKit::Surfaces::Message

Inherits:
Base
  • Object
show all
Defined in:
lib/block_kit/surfaces/message.rb

Constant Summary collapse

MAX_BLOCKS =
50
SUPPORTED_ELEMENTS =
[
  Elements::Button,
  Elements::ChannelsSelect,
  Elements::Checkboxes,
  Elements::ConversationsSelect,
  Elements::DatePicker,
  Elements::DatetimePicker,
  Elements::ExternalSelect,
  Elements::Image,
  Elements::MultiChannelsSelect,
  Elements::MultiConversationsSelect,
  Elements::MultiExternalSelect,
  Elements::MultiStaticSelect,
  Elements::MultiUsersSelect,
  Elements::Overflow,
  Elements::PlainTextInput,
  Elements::RadioButtons,
  Elements::StaticSelect,
  Elements::TimePicker,
  Elements::UsersSelect,
  Elements::WorkflowButton
].freeze

Instance Method Summary collapse

Methods inherited from Base

#==, fix, #fix_validation_errors, #fix_validation_errors!, fixes, inherited, #initialize, inspect, #inspect, #pretty_print, #to_json

Constructor Details

This class inherits a constructor from BlockKit::Base

Instance Method Details

#append(block) ⇒ Object

Overridden to return ‘self`, allowing chaining.



65
66
67
68
69
# File 'lib/block_kit/surfaces/message.rb', line 65

def append(block)
  blocks << block

  self
end

#as_jsonObject



71
72
73
74
75
76
77
78
# File 'lib/block_kit/surfaces/message.rb', line 71

def as_json(*)
  super().except(:type).merge(
    text: text,
    blocks: blocks&.map(&:as_json),
    thread_ts: thread_ts,
    mrkdwn: mrkdwn
  ).compact
end

#image(alt_text:, image_url: nil, slack_file: nil, title: nil, emoji: nil, block_id: nil) ⇒ Object



56
57
58
59
60
61
62
# File 'lib/block_kit/surfaces/message.rb', line 56

def image(alt_text:, image_url: nil, slack_file: nil, title: nil, emoji: nil, block_id: nil)
  if (image_url.nil? && slack_file.nil?) || (image_url && slack_file)
    raise ArgumentError, "Must provide either image_url or slack_file, but not both."
  end

  append(Layout::Image.new(image_url: image_url, slack_file: slack_file, alt_text: alt_text, title: title, block_id: block_id, emoji: emoji))
end