# frozen_string_literal: true class ThemeSettingsSerializer < ApplicationSerializer attributes :setting, :type, :default, :value, :description, :objects_schema_property_descriptions, :valid_values, :list_type, :textarea, :json_schema, :objects_schema def setting object.name end def type object.type_name end def default object.default end def value object.value end def description description_regexp = /^theme_metadata\.settings\.#{setting}(\.description)?$/ locale_file_description = object.theme.internal_translations.find { |t| t.key.match?(description_regexp) }&.value locale_file_description || object.description end def objects_schema_property_descriptions locales = {} key = "theme_metadata.settings.#{setting}.schema.properties." object.theme.internal_translations.each do |internal_translation| if internal_translation.key.start_with?(key) locales[internal_translation.key.delete_prefix(key)] = internal_translation.value end end locales end def include_objects_schema_property_descriptions? include_objects_schema? end def valid_values object.choices end def include_valid_values? object.type == ThemeSetting.types[:enum] end def include_description? description.present? end def list_type object.list_type end def include_list_type? object.type == ThemeSetting.types[:list] end def textarea object.textarea end def include_textarea? object.type == ThemeSetting.types[:string] end def objects_schema object.schema end def include_objects_schema? object.type == ThemeSetting.types[:objects] end def json_schema object.json_schema end def include_json_schema? object.type == ThemeSetting.types[:string] && object.json_schema.present? end end