1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-11-29 10:24:20 +01:00
fab-manager/app/services/setting_service.rb

28 lines
1.1 KiB
Ruby
Raw Normal View History

2020-01-27 17:10:29 +01:00
# frozen_string_literal: true
# Settings are saved in two database tables: Settings and HistoryValues.
# Due to the way the controller updates the settings, we cannot safely use ActiveRecord's callbacks (eg. after_update, after_commit...)
# so this service provides a wrapper around these operations.
class SettingService
def self.before_update(setting)
return false if Rails.application.secrets.locked_settings.include? setting.name
true
end
2020-06-09 18:51:57 +02:00
def self.after_update(setting)
2020-01-27 17:10:29 +01:00
# update the stylesheet
Stylesheet.theme&.rebuild! if %w[main_color secondary_color].include? setting.name
Stylesheet.home_page&.rebuild! if setting.name == 'home_css'
# notify about a change in privacy policy
NotifyPrivacyUpdateWorker.perform_async(setting.id) if setting.name == 'privacy_body'
# sync all users on stripe
2020-06-10 11:02:30 +02:00
SyncMembersOnStripeWorker.perform_async(setting.history_values.last&.invoicing_profile&.user&.id) if setting.name == 'stripe_secret_key'
# generate statistics
PeriodStatisticsWorker.perform_async(setting.previous_update) if setting.name == 'statistics_module' && setting.value == 'true'
2020-01-27 17:10:29 +01:00
end
end