Class: OnyxCord::Webhooks::View::MediaGalleryBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/onyxcord/webhooks/view/media_gallery_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(*items, id: nil) {|builder| ... } ⇒ MediaGalleryBuilder

Create a media gallery component.

Parameters:

  • id (Integer, nil) (defaults to: nil)

    The unique 32-bit ID of the media gallery component.

Yield Parameters:



8
9
10
11
12
13
14
15
# File 'lib/onyxcord/webhooks/view/media_gallery_builder.rb', line 8

def initialize(*items, id: nil)
  @id = id
  @items = []

  items.each { |item| self.item(item) }

  yield self if block_given?
end

Instance Method Details

#item(item = nil, url: nil, description: nil, spoiler: nil) ⇒ Object

Add a gallery item to the media gallery component.

Parameters:

  • url (String) (defaults to: nil)

    The URL to the gallery item's media.

  • description (String, nil) (defaults to: nil)

    The description of the gallery item.

  • spoiler (true, false) (defaults to: nil)

    Whether or not to apply a spoiler label to the gallery item.

Raises:

  • (ArgumentError)


21
22
23
24
25
26
# File 'lib/onyxcord/webhooks/view/media_gallery_builder.rb', line 21

def item(item = nil, url: nil, description: nil, spoiler: nil)
  url, description, spoiler = normalize_item(item, url, description, spoiler)
  raise ArgumentError, 'media gallery item requires a url' if url.nil? || url.to_s.empty?

  @items << { media: { url: url }, description: description, spoiler: spoiler }.compact
end