diff --git a/app/models/software_update.rb b/app/models/software_update.rb index 51a73c27311..2cb935130a4 100644 --- a/app/models/software_update.rb +++ b/app/models/software_update.rb @@ -24,7 +24,7 @@ class SoftwareUpdate < ApplicationRecord class << self def check_enabled? - ENV['UPDATE_CHECK_URL'] != '' + Rails.configuration.x.mastodon.software_update_url.present? end def pending_to_a diff --git a/app/services/software_update_check_service.rb b/app/services/software_update_check_service.rb index c8ce1753f5f..596c981fc96 100644 --- a/app/services/software_update_check_service.rb +++ b/app/services/software_update_check_service.rb @@ -27,7 +27,7 @@ class SoftwareUpdateCheckService < BaseService end def api_url - ENV.fetch('UPDATE_CHECK_URL', 'https://api.joinmastodon.org/update-check') + Rails.configuration.x.mastodon.software_update_url end def version diff --git a/config/application.rb b/config/application.rb index 3c62a492289..08bbfa3263a 100644 --- a/config/application.rb +++ b/config/application.rb @@ -112,6 +112,9 @@ module Mastodon end end + # Load defaults from config/mastodon.yml + config.x.mastodon = config_for(:mastodon) + config.to_prepare do Doorkeeper::AuthorizationsController.layout 'modal' Doorkeeper::AuthorizedApplicationsController.layout 'admin' diff --git a/config/mastodon.yml b/config/mastodon.yml new file mode 100644 index 00000000000..255213b4b7a --- /dev/null +++ b/config/mastodon.yml @@ -0,0 +1,3 @@ +--- +shared: + software_update_url: <%= ENV.fetch('UPDATE_CHECK_URL', 'https://api.joinmastodon.org/update-check') %> diff --git a/config/navigation.rb b/config/navigation.rb index 33efb78b1ee..5ee7aa4e984 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -6,7 +6,11 @@ SimpleNavigation::Configuration.run do |navigation| navigation.items do |n| n.item :web, safe_join([material_symbol('chevron_left'), t('settings.back')]), root_path - n.item :software_updates, safe_join([material_symbol('report'), t('admin.critical_update_pending')]), admin_software_updates_path, if: -> { ENV['UPDATE_CHECK_URL'] != '' && current_user.can?(:view_devops) && SoftwareUpdate.urgent_pending? }, html: { class: 'warning' } + n.item :software_updates, + safe_join([material_symbol('report'), t('admin.critical_update_pending')]), + admin_software_updates_path, + if: -> { Rails.configuration.x.mastodon.software_update_url.present? && current_user.can?(:view_devops) && SoftwareUpdate.urgent_pending? }, + html: { class: 'warning' } n.item :profile, safe_join([material_symbol('person'), t('settings.profile')]), settings_profile_path, if: -> { current_user.functional? && !self_destruct }, highlights_on: %r{/settings/profile|/settings/featured_tags|/settings/verification|/settings/privacy} diff --git a/spec/lib/admin/system_check/software_version_check_spec.rb b/spec/lib/admin/system_check/software_version_check_spec.rb index de4335fc519..859401ae623 100644 --- a/spec/lib/admin/system_check/software_version_check_spec.rb +++ b/spec/lib/admin/system_check/software_version_check_spec.rb @@ -27,9 +27,10 @@ describe Admin::SystemCheck::SoftwareVersionCheck do context 'when checks are disabled' do around do |example| - ClimateControl.modify UPDATE_CHECK_URL: '' do - example.run - end + original = Rails.configuration.x.mastodon.software_update_url + Rails.configuration.x.mastodon.software_update_url = '' + example.run + Rails.configuration.x.mastodon.software_update_url = original end it 'returns true' do diff --git a/spec/services/software_update_check_service_spec.rb b/spec/services/software_update_check_service_spec.rb index a1eb9d86e96..4098bd470a7 100644 --- a/spec/services/software_update_check_service_spec.rb +++ b/spec/services/software_update_check_service_spec.rb @@ -124,9 +124,10 @@ RSpec.describe SoftwareUpdateCheckService do context 'when update checking is disabled' do around do |example| - ClimateControl.modify UPDATE_CHECK_URL: '' do - example.run - end + original = Rails.configuration.x.mastodon.software_update_url + Rails.configuration.x.mastodon.software_update_url = '' + example.run + Rails.configuration.x.mastodon.software_update_url = original end before do @@ -148,9 +149,10 @@ RSpec.describe SoftwareUpdateCheckService do let(:update_check_url) { 'https://api.example.com/update_check' } around do |example| - ClimateControl.modify UPDATE_CHECK_URL: 'https://api.example.com/update_check' do - example.run - end + original = Rails.configuration.x.mastodon.software_update_url + Rails.configuration.x.mastodon.software_update_url = 'https://api.example.com/update_check' + example.run + Rails.configuration.x.mastodon.software_update_url = original end it_behaves_like 'when the feature is enabled'