diff --git a/app/models/settings/user_experience.rb b/app/models/settings/user_experience.rb
index b3427adb6..65bb5eb53 100644
--- a/app/models/settings/user_experience.rb
+++ b/app/models/settings/user_experience.rb
@@ -4,12 +4,18 @@ module Settings
self.table_name = :settings_user_experiences
HEX_COLOR_REGEX = /\A#(\h{6}|\h{3})\z/
+ FEED_STRATEGIES = %w[basic large_forem_experimental].freeze
+ FEED_STYLES = %w[basic rich compact].freeze
# The default font for all users that have not chosen a custom font yet
setting :default_font, type: :string, default: "sans_serif"
- setting :feed_strategy, type: :string, default: "basic"
+ setting :feed_strategy, type: :string, default: "basic", validates: {
+ inclusion: { in: FEED_STRATEGIES }
+ }
# basic (current default), rich (cover image on all posts), compact (more minimal)
- setting :feed_style, type: :string, default: "basic"
+ setting :feed_style, type: :string, default: "basic", validates: {
+ inclusion: { in: FEED_STYLES }
+ }
setting :home_feed_minimum_score, type: :integer, default: 0
setting :index_minimum_score, type: :integer, default: 0
setting :primary_brand_color_hex, type: :string, default: "#3b49df", validates: {
diff --git a/app/views/admin/settings/forms/_user_experience.html.erb b/app/views/admin/settings/forms/_user_experience.html.erb
index dfb4fe93e..bb628ffd5 100644
--- a/app/views/admin/settings/forms/_user_experience.html.erb
+++ b/app/views/admin/settings/forms/_user_experience.html.erb
@@ -14,18 +14,18 @@
<%= admin_config_label :feed_style, model: Settings::UserExperience %>
<%= admin_config_description Constants::Settings::UserExperience::DETAILS[:feed_style][:description] %>
- <%= f.text_field :feed_style,
- class: "crayons-textfield",
- value: Settings::UserExperience.feed_style,
- placeholder: Constants::Settings::UserExperience::DETAILS[:feed_style][:placeholder] %>
+ <%= select_tag "settings_user_experience[feed_style]",
+ options_for_select(Settings::UserExperience::FEED_STYLES, Settings::UserExperience.feed_style),
+ multiple: false,
+ class: "crayons-select" %>
<%= admin_config_label :feed_strategy, model: Settings::UserExperience %>
<%= admin_config_description Constants::Settings::UserExperience::DETAILS[:feed_strategy][:description] %>
- <%= f.text_field :feed_strategy,
- class: "crayons-textfield",
- value: Settings::UserExperience.feed_strategy,
- placeholder: Constants::Settings::UserExperience::DETAILS[:feed_strategy][:placeholder] %>
+ <%= select_tag "settings_user_experience[feed_strategy]",
+ options_for_select(Settings::UserExperience::FEED_STRATEGIES, Settings::UserExperience.feed_strategy),
+ multiple: false,
+ class: "crayons-select" %>
<%= admin_config_label :tag_feed_minimum_score, model: Settings::UserExperience %>
@@ -60,7 +60,7 @@
Settings::UserExperience.default_font,
),
multiple: false,
- class: "selectpicker" %>
+ class: "crayons-select" %>
<%= admin_config_label :default_locale, model: Settings::UserExperience %>
@@ -71,7 +71,7 @@
Settings::UserExperience.default_locale,
),
multiple: false,
- class: "selectpicker" %>
+ class: "crayons-select" %>
<%= admin_config_label :primary_brand_color_hex, model: Settings::UserExperience %>
diff --git a/spec/requests/admin/configs_spec.rb b/spec/requests/admin/configs_spec.rb
index 4f54b87c5..7c44af694 100644
--- a/spec/requests/admin/configs_spec.rb
+++ b/spec/requests/admin/configs_spec.rb
@@ -734,7 +734,7 @@ RSpec.describe "/admin/customization/config", type: :request do
end
it "updates the feed_strategy" do
- feed_strategy = "optimized"
+ feed_strategy = "large_forem_experimental"
post admin_settings_user_experiences_path, params: {
settings_user_experience: { feed_strategy: feed_strategy }
}