Module: RailsOnboarding::Configuration::ProgressiveDisclosure

Included in:
RailsOnboarding::Configuration
Defined in:
lib/rails_onboarding/configuration/progressive_disclosure.rb

Overview

Progressive feature disclosure configuration.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#progressive_disclosure_enabledObject

Returns the value of attribute progressive_disclosure_enabled.



5
6
7
# File 'lib/rails_onboarding/configuration/progressive_disclosure.rb', line 5

def progressive_disclosure_enabled
  @progressive_disclosure_enabled
end

#progressive_featuresObject

Returns the value of attribute progressive_features.



5
6
7
# File 'lib/rails_onboarding/configuration/progressive_disclosure.rb', line 5

def progressive_features
  @progressive_features
end

Instance Method Details

#show_progressive_feature?(feature_key, user) ⇒ Boolean

Check if a feature should be shown based on progressive disclosure

Parameters:

  • feature_key (Symbol, String)

    The feature key

  • user (Object)

    The user object

Returns:

  • (Boolean)

    True if feature should be shown



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/rails_onboarding/configuration/progressive_disclosure.rb', line 12

def show_progressive_feature?(feature_key, user)
  return true unless progressive_disclosure_enabled

  feature = progressive_features.find { |f| f[:key] == feature_key.to_sym }
  return true unless feature

  # Check if feature meets its reveal conditions
  case feature[:reveal_condition]
  when :time_based
    user.created_at + feature[:delay].seconds <= Time.current
  when :action_based
    user.send(feature[:check_method]) if user.respond_to?(feature[:check_method])
  when :step_based
    step_index(user.onboarding_current_step) >= step_index(feature[:after_step])
  else
    true
  end
rescue StandardError
  true # Default to showing feature if check fails
end