From f50bd3d6d93f0a81853275feb1c6de79adb0d2fc Mon Sep 17 00:00:00 2001 From: David Roetzel Date: Tue, 25 Feb 2025 11:01:26 +0100 Subject: [PATCH] Put FASP support behind a feature flag --- app/models/account.rb | 2 +- app/models/favourite.rb | 2 +- app/models/status.rb | 2 +- config/application.rb | 1 + config/navigation.rb | 2 +- config/routes.rb | 2 +- lib/mastodon/feature.rb | 11 +++++++++++ 7 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 lib/mastodon/feature.rb diff --git a/app/models/account.rb b/app/models/account.rb index e46b9e9e6f..f9feeebcd5 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -85,7 +85,7 @@ class Account < ApplicationRecord include Account::Associations include Account::Avatar include Account::Counters - include Account::FaspConcern + include Account::FaspConcern if Mastodon::Feature.fasp_enabled? include Account::FinderConcern include Account::Header include Account::Interactions diff --git a/app/models/favourite.rb b/app/models/favourite.rb index 7bf793e2a1..1731ac0d03 100644 --- a/app/models/favourite.rb +++ b/app/models/favourite.rb @@ -13,7 +13,7 @@ class Favourite < ApplicationRecord include Paginable - include Favourite::FaspConcern + include Favourite::FaspConcern if Mastodon::Feature.fasp_enabled? update_index('statuses', :status) diff --git a/app/models/status.rb b/app/models/status.rb index 8fe07a4a66..2d19dde04b 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -34,7 +34,7 @@ class Status < ApplicationRecord include Discard::Model include Paginable include RateLimitable - include Status::FaspConcern + include Status::FaspConcern if Mastodon::Feature.fasp_enabled? include Status::SafeReblogInsert include Status::SearchConcern include Status::SnapshotConcern diff --git a/config/application.rb b/config/application.rb index 92976e87ab..93e4e77e42 100644 --- a/config/application.rb +++ b/config/application.rb @@ -34,6 +34,7 @@ require_relative '../lib/paperclip/transcoder' require_relative '../lib/paperclip/type_corrector' require_relative '../lib/paperclip/response_with_limit_adapter' require_relative '../lib/terrapin/multi_pipe_extensions' +require_relative '../lib/mastodon/feature' require_relative '../lib/mastodon/snowflake' require_relative '../lib/mastodon/version' require_relative '../lib/mastodon/rack_middleware' diff --git a/config/navigation.rb b/config/navigation.rb index 942f037dce..d60f8cbc5b 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -73,7 +73,7 @@ SimpleNavigation::Configuration.run do |navigation| s.item :announcements, safe_join([material_symbol('campaign'), t('admin.announcements.title')]), admin_announcements_path, highlights_on: %r{/admin/announcements}, if: -> { current_user.can?(:manage_announcements) } s.item :custom_emojis, safe_join([material_symbol('mood'), t('admin.custom_emojis.title')]), admin_custom_emojis_path, highlights_on: %r{/admin/custom_emojis}, if: -> { current_user.can?(:manage_custom_emojis) } s.item :webhooks, safe_join([material_symbol('inbox'), t('admin.webhooks.title')]), admin_webhooks_path, highlights_on: %r{/admin/webhooks}, if: -> { current_user.can?(:manage_webhooks) } - s.item :fasp, safe_join([material_symbol('extension'), t('admin.fasp.title')]), admin_fasp_providers_path, highlights_on: %r{/admin/fasp}, if: -> { current_user.can?(:manage_federation) } + s.item :fasp, safe_join([material_symbol('extension'), t('admin.fasp.title')]), admin_fasp_providers_path, highlights_on: %r{/admin/fasp}, if: -> { current_user.can?(:manage_federation) } if Mastodon::Feature.fasp_enabled? s.item :relays, safe_join([material_symbol('captive_portal'), t('admin.relays.title')]), admin_relays_path, highlights_on: %r{/admin/relays}, if: -> { !limited_federation_mode? && current_user.can?(:manage_federation) } end diff --git a/config/routes.rb b/config/routes.rb index ff321858bb..f06be5f7df 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -196,7 +196,7 @@ Rails.application.routes.draw do draw(:api) - draw(:fasp) + draw(:fasp) if Mastodon::Feature.fasp_enabled? draw(:web_app) diff --git a/lib/mastodon/feature.rb b/lib/mastodon/feature.rb new file mode 100644 index 0000000000..c0e6c00db1 --- /dev/null +++ b/lib/mastodon/feature.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module Mastodon + module Feature + FASP_ENABLED = ENV['EXPERIMENTAL_FASP'] == 'true' + + def self.fasp_enabled? + FASP_ENABLED + end + end +end