Module: SpreeCmCommissioner::HomepageSectionBitwise

Extended by:
ActiveSupport::Concern
Included in:
HomepageSection
Defined in:
app/models/concerns/spree_cm_commissioner/homepage_section_bitwise.rb

Constant Summary collapse

BIT_SEGMENT =

Append only: [SpreeCmCommissioner::HomepageBackground] maps these keys to an integer enum by index, so inserting one renumbers every stored background.

{
  general: 0b00001,
  ticket: 0b00010,
  tour: 0b00100,
  accommodation: 0b01000,
  things_to_do: 0b10000,
  football: 0b100000,
  show: 0b1000000,
  bus: 0b10000000,
  intercity_taxi: 0b100000000,
  rails: 0b1000000000,
  ferry: 0b10000000000
}.freeze
BIT_MINI_APP =

Keys match the mini_app query param the app sends (ApiConstant.miniApp.paramValue).

{
  vattanac: 0b001,
  acleda: 0b010,
  wing: 0b100
}.freeze
MINI_APP_HOME_SEGMENT =

The feed each mini app's home requests, mirroring isWing ? BusRoute : HomeRoute in routes.dart.

{
  vattanac: :general,
  acleda: :general,
  wing: :bus
}.freeze

Instance Method Summary collapse

Instance Method Details

#mini_app_enabled?(bit_value) ⇒ Boolean

Returns:

  • (Boolean)


63
64
65
# File 'app/models/concerns/spree_cm_commissioner/homepage_section_bitwise.rb', line 63

def mini_app_enabled?(bit_value)
  mini_app.to_i & bit_value != 0
end

#mini_apps ⇒ Object



57
58
59
60
61
# File 'app/models/concerns/spree_cm_commissioner/homepage_section_bitwise.rb', line 57

def mini_apps
  BIT_MINI_APP.filter_map do |mini_app_value, bit_value|
    mini_app_value if mini_app_enabled?(bit_value)
  end
end

#segment_enabled?(bit_value) ⇒ Boolean

Returns:

  • (Boolean)


53
54
55
# File 'app/models/concerns/spree_cm_commissioner/homepage_section_bitwise.rb', line 53

def segment_enabled?(bit_value)
  segment & bit_value != 0
end

#segments ⇒ Object



47
48
49
50
51
# File 'app/models/concerns/spree_cm_commissioner/homepage_section_bitwise.rb', line 47

def segments
  BIT_SEGMENT.filter_map do |segment_value, bit_value|
    segment_value if segment_enabled?(bit_value)
  end
end