Method: Line::Bot::V2::Liff::LiffView#initialize

Defined in:
lib/line/bot/v2/liff/model/liff_view.rb

#initialize(type:, url:, module_mode: nil, **dynamic_attributes) ⇒ LiffView

Returns a new instance of LiffView.

Parameters:

  • type (String)

    (‘compact’|‘tall’|‘full’) Size of the LIFF app view. Specify one of these values: - compact - tall - full

  • url (String)

    Endpoint URL. This is the URL of the web app that implements the LIFF app (e.g. example.com). Used when the LIFF app is launched using the LIFF URL. The URL scheme must be https. URL fragments (#URL-fragment) can’t be specified.

  • module_mode (Boolean, nil) (defaults to: nil)

    ‘true` to use the LIFF app in modular mode. When in modular mode, the action button in the header is not displayed.



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/line/bot/v2/liff/model/liff_view.rb', line 29

def initialize(
  type:,
  url:,
  module_mode: nil,
  **dynamic_attributes
)
  
  @type = type
  @url = url
  @module_mode = module_mode

  dynamic_attributes.each do |key, value|
    self.class.attr_accessor key

    if value.is_a?(Hash)
      struct_klass = Struct.new(*value.keys.map(&:to_sym))
      struct_values = value.map { |_k, v| v.is_a?(Hash) ? Line::Bot::V2::Utils.hash_to_struct(v) : v }
      instance_variable_set("@#{key}", struct_klass.new(*struct_values))
    else
      instance_variable_set("@#{key}", value)
    end
  end
end