summaryrefslogtreecommitdiff
path: root/app/models/release_highlight.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/release_highlight.rb')
-rw-r--r--app/models/release_highlight.rb36
1 files changed, 31 insertions, 5 deletions
diff --git a/app/models/release_highlight.rb b/app/models/release_highlight.rb
index 98d9899a349..9c30d0611e6 100644
--- a/app/models/release_highlight.rb
+++ b/app/models/release_highlight.rb
@@ -4,6 +4,10 @@ class ReleaseHighlight
CACHE_DURATION = 1.hour
FILES_PATH = Rails.root.join('data', 'whats_new', '*.yml')
+ FREE_PACKAGE = 'Free'
+ PREMIUM_PACKAGE = 'Premium'
+ ULTIMATE_PACKAGE = 'Ultimate'
+
def self.paginated(page: 1)
key = self.cache_key("items:page-#{page}")
@@ -25,14 +29,12 @@ class ReleaseHighlight
file = File.read(file_path)
items = YAML.safe_load(file, permitted_classes: [Date])
- platform = Gitlab.com? ? 'gitlab-com' : 'self-managed'
-
items&.map! do |item|
- next unless item[platform]
+ next unless include_item?(item)
begin
item.tap {|i| i['body'] = Kramdown::Document.new(i['body']).to_html }
- rescue => e
+ rescue StandardError => e
Gitlab::ErrorTracking.track_exception(e, file_path: file_path)
next
@@ -53,7 +55,8 @@ class ReleaseHighlight
end
def self.cache_key(key)
- ['release_highlight', key, Gitlab.revision].join(':')
+ variant = Gitlab::CurrentSettings.current_application_settings.whats_new_variant
+ ['release_highlight', variant, key, Gitlab.revision].join(':')
end
def self.next_page(current_page: 1)
@@ -88,4 +91,27 @@ class ReleaseHighlight
delegate :each, to: :items
end
+
+ def self.current_package
+ return FREE_PACKAGE unless defined?(License)
+
+ case License.current&.plan&.downcase
+ when License::PREMIUM_PLAN
+ PREMIUM_PACKAGE
+ when License::ULTIMATE_PLAN
+ ULTIMATE_PACKAGE
+ else
+ FREE_PACKAGE
+ end
+ end
+
+ def self.include_item?(item)
+ platform = Gitlab.com? ? 'gitlab-com' : 'self-managed'
+
+ return false unless item[platform]
+
+ return true unless Gitlab::CurrentSettings.current_application_settings.whats_new_variant_current_tier?
+
+ item['packages']&.include?(current_package)
+ end
end