discourse/app/serializers/user_option_serializer.rb
Martin Brennan 0c46a2e805
UX: Allow admins to opt out of upcoming change available notifications (#40020)
Adds a new "Notify me when an upcoming change becomes available for
preview" user preference in the Notifications tab, enabled by
default, which only shows for admins.

When disabled, these admins will no longer receive notifications
when a new upcoming change is available for preview on their
site (which happens at promotion status - 1).
2026-05-18 12:10:18 +10:00

70 lines
2.3 KiB
Ruby
Vendored

# frozen_string_literal: true
class UserOptionSerializer < ApplicationSerializer
attributes :user_id,
:mailing_list_mode,
:mailing_list_mode_frequency,
:email_digests,
:email_level,
:email_messages_level,
:external_links_in_new_tab,
:color_scheme_id,
:dark_scheme_id,
:dynamic_favicon,
:enable_quoting,
:enable_smart_lists,
:enable_defer,
:enable_markdown_monospace_font,
:digest_after_minutes,
:automatically_unpin_topics,
:auto_track_topics_after_msecs,
:notification_level_when_replying,
:new_topic_duration_minutes,
:email_previous_replies,
:email_in_reply_to,
:like_notification_frequency,
:notify_on_linked_posts,
:enable_upcoming_change_available_notifications,
:include_tl0_in_digests,
:theme_ids,
:theme_key_seq,
:allow_private_messages,
:enable_allowed_pm_users,
:homepage_id,
:hide_profile_and_presence,
:hide_profile,
:hide_presence,
:text_size,
:text_size_seq,
:title_count_mode,
:bookmark_auto_delete_preference,
:timezone,
:skip_new_user_tips,
:default_calendar,
:oldest_search_log_date,
:seen_popups,
:sidebar_link_to_filtered_list,
:sidebar_show_count_of_new_items,
:watched_precedence_over_muted,
:topics_unread_when_closed,
:composition_mode,
:interface_color_mode,
:show_original_content
def auto_track_topics_after_msecs
object.auto_track_topics_after_msecs || SiteSetting.default_other_auto_track_topics_after_msecs
end
def notification_level_when_replying
object.notification_level_when_replying ||
SiteSetting.default_other_notification_level_when_replying
end
def new_topic_duration_minutes
object.new_topic_duration_minutes || SiteSetting.default_other_new_topic_duration_minutes
end
def theme_ids
object.theme_ids.presence || [SiteSetting.default_theme_id]
end
end