diff --git a/app/controllers/api/v0/instances_controller.rb b/app/controllers/api/v0/instances_controller.rb
index cd8fef8e8..17cb8fbda 100644
--- a/app/controllers/api/v0/instances_controller.rb
+++ b/app/controllers/api/v0/instances_controller.rb
@@ -8,6 +8,7 @@ module Api
context: ApplicationConfig["FOREM_CONTEXT"],
cover_image_url: Settings::General.main_social_image,
description: Settings::Community.community_description,
+ display_in_directory: Settings::UserExperience.display_in_directory,
logo_image_url: Settings::General.logo_png,
name: Settings::Community.community_name,
registered_users_count: User.registered.estimated_count,
diff --git a/app/models/settings/user_experience.rb b/app/models/settings/user_experience.rb
index f7ef81796..736c8ce23 100644
--- a/app/models/settings/user_experience.rb
+++ b/app/models/settings/user_experience.rb
@@ -22,5 +22,6 @@ module Settings
# a public forem could have more fine-grained authentication (listings ar private etc.) in future
setting :public, type: :boolean, default: 0
setting :tag_feed_minimum_score, type: :integer, default: 0
+ setting :display_in_directory, type: :boolean, default: true
end
end
diff --git a/app/views/admin/settings/forms/_user_experience.html.erb b/app/views/admin/settings/forms/_user_experience.html.erb
index d8edd7fe2..de7c1050e 100644
--- a/app/views/admin/settings/forms/_user_experience.html.erb
+++ b/app/views/admin/settings/forms/_user_experience.html.erb
@@ -72,6 +72,15 @@
+
+ <%= f.check_box :display_in_directory, checked: Settings::UserExperience.display_in_directory, class: "crayons-checkbox" %>
+
+ <%= admin_config_label :display_in_directory, model: Settings::UserExperience %>
+
+ Do you want this Forem to be displayed in the Forem Directory?
+
+
+
<%= render "update_setting_button", f: f %>
diff --git a/spec/requests/admin/configs_spec.rb b/spec/requests/admin/configs_spec.rb
index b5142d0f0..0f8b8e84b 100644
--- a/spec/requests/admin/configs_spec.rb
+++ b/spec/requests/admin/configs_spec.rb
@@ -805,6 +805,15 @@ RSpec.describe "/admin/customization/config", type: :request do
}
expect(Settings::UserExperience.public).to eq(is_public)
end
+
+ it "updates display_in_directory to false" do
+ default_value = Settings::UserExperience.get_default(:display_in_directory)
+ expect do
+ post admin_settings_user_experiences_path, params: {
+ settings_user_experience: { display_in_directory: false }
+ }
+ end.to change(Settings::UserExperience, :display_in_directory).from(default_value).to(false)
+ end
end
describe "Credits" do
diff --git a/spec/requests/api/v0/instances_spec.rb b/spec/requests/api/v0/instances_spec.rb
index 3eb8033a5..cdb4ae267 100644
--- a/spec/requests/api/v0/instances_spec.rb
+++ b/spec/requests/api/v0/instances_spec.rb
@@ -9,6 +9,7 @@ RSpec.describe "Api::V0::Instances", type: :request do
expect(response.parsed_body["context"]).to eq ApplicationConfig["FOREM_CONTEXT"]
expect(response.parsed_body["cover_image_url"]).to eq Settings::General.main_social_image
expect(response.parsed_body["description"]).to eq Settings::Community.community_description
+ expect(response.parsed_body["display_in_directory"]).to eq Settings::UserExperience.display_in_directory
expect(response.parsed_body["logo_image_url"]).to eq Settings::General.logo_png
expect(response.parsed_body["name"]).to eq Settings::Community.community_name
expect(response.parsed_body["registered_users_count"]).to eq User.registered.estimated_count