chore: Clean up the feature presentation in super admin (#10949)
- improve styling of the feature toggle displayed in super admin <img width="1540" alt="Screenshot 2025-02-21 at 4 47 58 PM" src="https://github.com/user-attachments/assets/c111ff0d-c2ce-4609-832b-0ea631c97471" /> <img width="1451" alt="Screenshot 2025-02-21 at 4 48 11 PM" src="https://github.com/user-attachments/assets/fe5df4ae-984b-4f9d-baba-9555935fbd55" /> --------- Co-authored-by: Pranav <pranavrajs@gmail.com>
This commit is contained in:
@@ -7,13 +7,46 @@ module SuperAdmin::AccountFeaturesHelper
|
||||
account_features.filter { |feature| feature['premium'] }.pluck('name')
|
||||
end
|
||||
|
||||
# Accepts account.features as argument
|
||||
def self.filtered_features(features)
|
||||
deployment_env = GlobalConfig.get_value('DEPLOYMENT_ENV')
|
||||
return features if deployment_env == 'cloud'
|
||||
# Returns a hash mapping feature names to their display names
|
||||
def self.feature_display_names
|
||||
account_features.each_with_object({}) do |feature, hash|
|
||||
hash[feature['name']] = feature['display_name']
|
||||
end
|
||||
end
|
||||
|
||||
def self.filter_internal_features(features)
|
||||
return features if GlobalConfig.get_value('DEPLOYMENT_ENV') == 'cloud'
|
||||
|
||||
# Filter out internal features for non-cloud environments
|
||||
internal_features = account_features.select { |f| f['chatwoot_internal'] }.pluck('name')
|
||||
features.except(*internal_features)
|
||||
end
|
||||
|
||||
def self.filter_deprecated_features(features)
|
||||
deprecated_features = account_features.select { |f| f['deprecated'] }.pluck('name')
|
||||
features.except(*deprecated_features)
|
||||
end
|
||||
|
||||
def self.sort_and_transform_features(features, display_names)
|
||||
features.sort_by { |key, _| display_names[key] || key }
|
||||
.to_h
|
||||
.transform_keys { |key| [key, display_names[key]] }
|
||||
end
|
||||
|
||||
def self.partition_features(features)
|
||||
filtered = filter_internal_features(features)
|
||||
filtered = filter_deprecated_features(filtered)
|
||||
display_names = feature_display_names
|
||||
|
||||
regular, premium = filtered.partition { |key, _value| account_premium_features.exclude?(key) }
|
||||
|
||||
[
|
||||
sort_and_transform_features(regular, display_names),
|
||||
sort_and_transform_features(premium, display_names)
|
||||
]
|
||||
end
|
||||
|
||||
def self.filtered_features(features)
|
||||
regular, premium = partition_features(features)
|
||||
regular.merge(premium)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user