discourse/lib/theme_settings_manager/enum.rb
Alan Guo Xiang Tan 6ca2396b12
DEV: Centralise logic for validating a theme setting value (#25764)
Why this change?

The logic for validating a theme setting's value and default value was
not consistent as each part of the code would implement its own logic.
This is not ideal as the default value may be validated differently than
when we are setting a new value. Therefore, this commit seeks to
refactor all the validation logic for a theme setting's value into a
single service class.

What does this change do?

Introduce the `ThemeSettingsValidator` service class which holds all the
necessary helper methods required to validate a theme setting's value
2024-02-21 08:08:26 +08:00

14 lines
257 B
Ruby

# frozen_string_literal: true
class ThemeSettingsManager::Enum < ThemeSettingsManager
def value
val = super
match = choices.find { |choice| choice == val || choice.to_s == val }
match || val
end
def choices
@opts[:choices]
end
end