b803ae3300
* Bugfix: Private notes in emails Private notes were sent in the emails as part of conversation continuity. Fixed this issue. Also made the changes to not even queue the mails if message is a private note. * Bugfix: Change issue with featurable in signup - passing array * Bugfix: Added specs for checking private notes being sent in email
60 lines
1.4 KiB
Ruby
60 lines
1.4 KiB
Ruby
module Featurable
|
|
extend ActiveSupport::Concern
|
|
|
|
QUERY_MODE = {
|
|
flag_query_mode: :bit_operator
|
|
}.freeze
|
|
|
|
FEATURE_LIST = YAML.safe_load(File.read(Rails.root.join('config/features.yml'))).freeze
|
|
|
|
FEATURES = FEATURE_LIST.each_with_object({}) do |feature, result|
|
|
result[result.keys.size + 1] = "feature_#{feature['name']}".to_sym
|
|
end
|
|
|
|
included do
|
|
include FlagShihTzu
|
|
has_flags FEATURES.merge(column: 'feature_flags').merge(QUERY_MODE)
|
|
|
|
before_create :enable_default_features
|
|
end
|
|
|
|
def enable_features(*names)
|
|
names.each do |name|
|
|
send("feature_#{name}=", true)
|
|
end
|
|
end
|
|
|
|
def disable_features(*names)
|
|
names.each do |name|
|
|
send("feature_#{name}=", false)
|
|
end
|
|
end
|
|
|
|
def feature_enabled?(name)
|
|
send("feature_#{name}?")
|
|
end
|
|
|
|
def all_features
|
|
FEATURE_LIST.map { |f| f['name'] }.index_with do |feature_name|
|
|
feature_enabled?(feature_name)
|
|
end
|
|
end
|
|
|
|
def enabled_features
|
|
all_features.select { |_feature, enabled| enabled == true }
|
|
end
|
|
|
|
def disabled_features
|
|
all_features.select { |_feature, enabled| enabled == false }
|
|
end
|
|
|
|
private
|
|
|
|
def enable_default_features
|
|
config = InstallationConfig.find_by(name: 'ACCOUNT_LEVEL_FEATURE_DEFAULTS')
|
|
return true if config.blank?
|
|
|
|
features_to_enabled = config.value.select { |f| f[:enabled] }.map { |f| f[:name] }
|
|
enable_features(*features_to_enabled)
|
|
end
|
|
end
|