discourse/app/serializers
Krzysztof Kotlarek 094052c1ff
FIX: serialize Flags instead of PostActionType (#28259)
### Why?
Before, all flags were static. Therefore, they were stored in class variables and serialized by SiteSerializer. Recently, we added an option for admins to add their own flags or disable existing flags. Therefore, the class variable had to be dropped because it was unsafe for a multisite environment. However, it started causing performance problems. 

### Solution
When a new Flag system is used, instead of using PostActionType, we can serialize Flags and use fragment cache for performance reasons. 

At the same time, we are still supporting deprecated `replace_flags` API call. When it is used, we fall back to the old solution and the admin cannot add custom flags. In a couple of months, we will be able to drop that API function and clean that code properly. However, because it may still be used, redis cache was introduced to improve performance.

To test backward compatibility you can add this code to any plugin
```ruby
  replace_flags do |flag_settings|
    flag_settings.add(
      4,
      :inappropriate,
      topic_type: true,
      notify_type: true,
      auto_action_type: true,
    )
    flag_settings.add(1001, :trolling, topic_type: true, notify_type: true, auto_action_type: true)
  end
```
2024-08-13 11:22:37 +10:00
..
concerns FEATURE: Hide user status when user is hiding public profile and presence (#24300) 2024-02-26 17:40:48 +04:00
about_serializer.rb DEV: Add site age and site activities section to the redesigned about page (#28214) 2024-08-07 11:11:41 +03:00
admin_badge_serializer.rb FIX: Badge image uploader (#28188) 2024-08-01 15:36:17 +02:00
admin_badges_serializer.rb
admin_detailed_user_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
admin_email_template_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
admin_form_template_serializer.rb DEV: Create form templates (#20189) 2023-02-08 11:21:39 -08:00
admin_notice_serializer.rb DEV: Database backed admin notices (#26192) 2024-05-23 09:29:08 +08:00
admin_plugin_serializer.rb UX: Disable plugin list settings button for some plugins (#27124) 2024-05-23 12:04:26 +10:00
admin_user_action_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
admin_user_list_serializer.rb DEV: Deprecate defunct User#flag_level column (#24134) 2023-10-27 17:27:04 +08:00
admin_user_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
admin_web_hook_event_serializer.rb FEATURE: Add Mechanism to redeliver all failed webhook events (#27609) 2024-07-08 15:43:16 -05:00
admin_web_hook_serializer.rb DEV: Block accidental serialization of entire AR models (#27668) 2024-07-01 17:08:48 -03:00
api_key_scope_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
api_key_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
application_serializer.rb DEV: Reduce duplication with DistributedMutex#clear_regex (#25795) 2024-02-21 14:19:04 -06:00
archetype_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
associated_group_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
auth_provider_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
backup_file_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
badge_grouping_serializer.rb
badge_index_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
badge_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
badge_type_serializer.rb
basic_api_key_serializer.rb PERF: introduce a basic api key serializer 2024-04-24 19:16:10 +02:00
basic_category_serializer.rb FIX: Fetch categories for "+subcategories" option (#26622) 2024-04-25 16:47:45 +03:00
basic_group_history_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
basic_group_serializer.rb FEATURE: Allow group owners promote more owners (#19768) 2023-01-11 16:43:18 +08:00
basic_group_user_serializer.rb
basic_post_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
basic_reviewable_flagged_post_serializer.rb DEV: Add reviewables tab to the new user menu (#17630) 2022-07-28 11:16:33 +03:00
basic_reviewable_queued_post_serializer.rb DEV: Add reviewables tab to the new user menu (#17630) 2022-07-28 11:16:33 +03:00
basic_reviewable_serializer.rb DEV: Include pending reviewables in the main tab in the user menu (#18471) 2022-10-05 12:30:02 +03:00
basic_reviewable_user_serializer.rb DEV: Add reviewables tab to the new user menu (#17630) 2022-07-28 11:16:33 +03:00
basic_theme_serializer.rb PERF: Don't serialize value for theme_fields unnecessarily (#21201) 2023-04-24 09:30:51 -05:00
basic_topic_serializer.rb
basic_user_badge_serializer.rb
basic_user_serializer.rb FEATURE: Hide user status when user is hiding public profile and presence (#24300) 2024-02-26 17:40:48 +04:00
category_and_topic_lists_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
category_badge_serializer.rb DEV: Merge two similar category serializers (#26653) 2024-04-17 18:52:34 +03:00
category_detailed_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
category_group_serializer.rb
category_list_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
category_required_tag_group_serializer.rb DEV: Ensure a broken tag_group relation doesn't raise an error (#16529) 2022-04-21 18:18:35 +01:00
category_serializer.rb FEATURE: Configurable auto-bump cooldown (#20507) 2023-03-10 13:45:01 +08:00
category_upload_serializer.rb
color_scheme_color_serializer.rb
color_scheme_selectable_serializer.rb
color_scheme_serializer.rb FIX: Allow non-persisted color-scheme colors to be edited (#20104) 2023-01-31 17:10:32 +00:00
current_user_option_serializer.rb FEATURE: Split navigation preference for count and behavior of sidebar links (#22203) 2023-06-22 19:04:13 +03:00
current_user_serializer.rb FIX: Ensure do-not-disturb icon updates correctly (#28253) 2024-08-06 19:13:13 +01:00
detailed_tag_serializer.rb FIX: Include permissions in the tag serializer (#27849) 2024-07-11 19:59:57 +03:00
detailed_user_badge_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
directory_column_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
directory_item_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
discourse_version_check_serializer.rb
draft_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
edit_directory_column_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
email_log_serializer.rb FEAT: add cc addresses and post_id to sent email logs (#25014) 2024-01-03 09:27:25 +08:00
email_style_serializer.rb
embeddable_host_serializer.rb FEATURE: Extend embeddable hosts with Individual tags and author assignments (#26868) 2024-05-16 15:47:01 -04:00
embedding_serializer.rb
emoji_serializer.rb
flag_serializer.rb FIX: serialize Flags instead of PostActionType (#28259) 2024-08-13 11:22:37 +10:00
flagged_topic_serializer.rb
flagged_topic_summary_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
flagged_user_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
flair_group_serializer.rb
form_template_serializer.rb DEV: Show form templates in the composer (#21190) 2023-05-29 14:47:18 -07:00
found_user_serializer.rb FEATURE: Hide user status when user is hiding public profile and presence (#24300) 2024-02-26 17:40:48 +04:00
gap_serializer.rb
group_post_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
group_post_user_serializer.rb
group_requester_serializer.rb
group_show_serializer.rb UX: Use a dropdown for SSL mode for group SMTP (#27932) 2024-07-18 10:33:14 +10:00
group_user_serializer.rb FEATURE: Hide user status when user is hiding public profile and presence (#24300) 2024-02-26 17:40:48 +04:00
group_user_with_custom_fields_serializer.rb FEATURE: Hide user status when user is hiding public profile and presence (#24300) 2024-02-26 17:40:48 +04:00
grouped_screened_url_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
grouped_search_result_serializer.rb FIX: Load categories with search topic results (#25700) 2024-02-21 17:29:47 +02:00
hidden_profile_serializer.rb UX: Show message and chat buttons on hidden profiles (#27326) 2024-06-10 10:38:22 -03:00
inactive_user_serializer.rb FEATURE: Show user cards for inactive users (#21387) 2023-05-15 21:45:26 +03:00
incoming_email_details_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
incoming_email_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
invite_link_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
invite_serializer.rb FIX: Hide delete button to invite as user are unable to delete anyway (#21884) 2023-06-06 12:24:19 +08:00
invited_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
invited_user_record_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
invited_user_serializer.rb
listable_topic_serializer.rb FIX: Better tracking of topic visibility changes (#26709) 2024-04-29 10:34:46 +10:00
new_post_result_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
notification_serializer.rb FEATURE: Site setting to display user avatars in user menu (#24514) 2023-12-07 11:30:44 -06:00
penalty_counts_serializer.rb
pending_post_serializer.rb FIX: Attribute pending post to author in `PendingPostSerialier` (#23369) 2023-09-03 22:14:51 +00:00
permalink_serializer.rb FEATURE: Permalinks for users (#25552) 2024-02-05 17:31:31 +01:00
post_action_type_serializer.rb FIX: serialize Flags instead of PostActionType (#28259) 2024-08-13 11:22:37 +10:00
post_action_user_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
post_item_excerpt.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
post_revision_serializer.rb FIX: post revision serializer when tags is a string (#27499) 2024-06-21 08:09:21 +10:00
post_serializer.rb FIX: serialize Flags instead of PostActionType (#28259) 2024-08-13 11:22:37 +10:00
post_stream_serializer_mixin.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
post_wordpress_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
poster_serializer.rb
presence_channel_state_serializer.rb
primary_group_serializer.rb
private_message_topic_tracking_state_serializer.rb
published_page_serializer.rb
queued_post_serializer.rb DEV: Replace raw comments with deprecation warnings (#22617) 2023-07-18 10:13:40 +08:00
remote_theme_serializer.rb PERF: Don't serialize value for theme_fields unnecessarily (#21201) 2023-04-24 09:30:51 -05:00
reviewable_action_serializer.rb FIX: Don't mix up action labels between different reviewables (#23365) 2023-09-06 10:57:30 +08:00
reviewable_bundled_action_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
reviewable_conversation_post_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
reviewable_conversation_serializer.rb
reviewable_editable_field_serializer.rb
reviewable_explanation_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
reviewable_flagged_post_serializer.rb DEV: Include context question for chat reviewables (#23332) 2023-09-05 10:11:39 +08:00
reviewable_history_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
reviewable_perform_result_serializer.rb DEV: Remove legacy user menu (#21308) 2023-05-17 09:16:42 -07:00
reviewable_post_serializer.rb
reviewable_queued_post_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
reviewable_score_explanation_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
reviewable_score_serializer.rb DEV: Convert review_media_unless_trust_level to group-based setting (#25201) 2024-01-11 13:43:01 +10:00
reviewable_score_type_serializer.rb FEATURE: created edit and delete flags (#27484) 2024-07-03 08:45:37 +10:00
reviewable_serializer.rb DEV: Update to lastest rubocop-discourse 2024-05-27 18:06:14 +02:00
reviewable_settings_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
reviewable_topic_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
reviewable_user_serializer.rb SECURITY: Update reviewable user serializer payload 2024-07-03 20:49:19 +08:00
screened_email_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
screened_ip_address_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
screened_url_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
search_logs_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
search_post_serializer.rb DEV: Get headline excerpt config from GroupedSearchResult in serializer. (#20942) 2023-04-03 15:02:42 -03:00
search_result_user_serializer.rb
search_topic_list_item_serializer.rb
sidebar_section_serializer.rb PERF: Strict loading for SidebarSection queries (#21717) 2023-05-25 09:10:32 +08:00
sidebar_tag_serializer.rb UX: Display tag's description as title in navigation menu (#22710) 2023-07-24 08:07:37 +08:00
sidebar_url_serializer.rb FIX: Simplify sidebar custom link implementation (#26201) 2024-03-20 12:55:40 +00:00
similar_admin_user_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
similar_topic_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
single_sign_on_record_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
site_category_serializer.rb DEV: Try fix category form template flaky (#22461) 2023-07-06 14:42:59 +10:00
site_serializer.rb FIX: serialize Flags instead of PostActionType (#28259) 2024-08-13 11:22:37 +10:00
site_text_serializer.rb DEV: Add endpoint for dismissing outdated translations (#22509) 2023-07-19 23:06:13 +08:00
skipped_email_log_serializer.rb
suggested_topic_serializer.rb DEV: Use PosterSerializer for SuggestedTopicSerializer posters (#25650) 2024-02-12 14:04:02 -06:00
suggested_topics_mixin.rb DEV: Replace #pluck_first freedom patch with AR #pick in core (#19893) 2023-02-13 12:39:45 +08:00
tag_group_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
tag_serializer.rb SECURITY: Default tags to show count of topics in unrestricted categories (#19916) 2023-01-20 09:50:24 +08:00
theme_field_serializer.rb DEV: Add `skip_migrations` param when importing remote theme (#25218) 2024-01-11 14:04:02 +08:00
theme_objects_setting_metadata_serializer.rb DEV: Change category type to categories type for theme object schema (#26339) 2024-03-27 10:54:30 +08:00
theme_serializer.rb DEV: Block accidental serialization of entire AR models (#27668) 2024-07-01 17:08:48 -03:00
theme_settings_serializer.rb DEV: Load theme objects typed setting metadata when routing to editor (#26354) 2024-03-26 14:02:05 +08:00
theme_translation_serializer.rb
topic_embed_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
topic_flag_type_serializer.rb FIX: Return properly interpolated translations for flag types 2024-07-30 18:30:57 +02:00
topic_link_serializer.rb DEV: Do not include method definitions in serializer `attributes` 2023-01-09 14:15:00 +00:00
topic_list_item_serializer.rb FEATURE: display PM participant group names in the topics list. (#21677) 2023-05-31 19:32:06 +05:30
topic_list_serializer.rb DEV: Merge two similar category serializers (#26653) 2024-04-17 18:52:34 +03:00
topic_pending_post_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
topic_post_count_serializer.rb FIX: Show auto-group flair according to user preferences (#21221) 2023-04-24 16:04:26 -03:00
topic_poster_serializer.rb
topic_timer_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
topic_tracking_state_item_serializer.rb PERF: optimise serialization for topic tracking state (#20860) 2023-03-28 18:09:22 +11:00
topic_tracking_state_serializer.rb PERF: optimise serialization for topic tracking state (#20860) 2023-03-28 18:09:22 +11:00
topic_view_bookmark_serializer.rb DEV: Block accidental serialization of entire AR models (#27668) 2024-07-01 17:08:48 -03:00
topic_view_details_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
topic_view_posts_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
topic_view_serializer.rb DEV: Remove summarization code (#27373) 2024-07-02 08:51:47 -07:00
topic_view_wordpress_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
trust_level3_requirements_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
upload_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
user_action_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
user_auth_token_serializer.rb DEV: Update to lastest rubocop-discourse 2024-05-27 18:06:14 +02:00
user_badge_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
user_badges_serializer.rb
user_bookmark_base_serializer.rb FIX: Allow .ics for polymorphic bookmarks (#16694) 2022-05-11 09:29:24 +10:00
user_bookmark_list_serializer.rb FIX: Serialize categories for bookmarks (#26606) 2024-04-17 17:23:47 +03:00
user_card_serializer.rb DEV: Use serializers for `user_notification_schedule` and `featured_topic` (#27719) 2024-07-05 00:00:24 -03:00
user_field_serializer.rb FEATURE: Implement new required options in admin user fields UI (#27079) 2024-05-23 19:18:25 +08:00
user_history_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
user_name_serializer.rb
user_notification_schedule_serializer.rb DEV: Use serializers for `user_notification_schedule` and `featured_topic` (#27719) 2024-07-05 00:00:24 -03:00
user_notification_total_serializer.rb DEV: Dedicated route for current user notification counts (#26106) 2024-03-15 12:08:37 -04:00
user_option_serializer.rb FEATURE: Silence Close Notifications User Setting (#26072) 2024-03-08 15:14:46 -07:00
user_post_bookmark_serializer.rb DEV: Fix Lint/DuplicateMethods (#24746) 2023-12-06 13:18:34 +01:00
user_post_topic_bookmark_base_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
user_serializer.rb FIX: show primary user group options to members in account prefs (#27664) 2024-07-05 19:43:50 +04:00
user_status_serializer.rb DEV: Format `UserStatus#ends_at` as a ISO8601 timestamp (#23796) 2023-10-05 20:41:12 +02:00
user_summary_serializer.rb FEATURE: allow disabling user activity tab for non admin users (#25540) 2024-02-05 14:30:36 +05:30
user_tag_notifications_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
user_topic_bookmark_serializer.rb PERF: Rely on preload for first_post for TopicBookmarkable (#18066) 2022-08-24 16:01:29 +10:00
user_with_custom_fields_serializer.rb FEATURE: Hide user status when user is hiding public profile and presence (#24300) 2024-02-26 17:40:48 +04:00
user_wordpress_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
watched_word_list_serializer.rb DEV: Refactor watched words (#24163) 2023-11-01 16:41:10 +02:00
watched_word_serializer.rb FEATURE: add HTML replacements 2024-05-14 10:41:27 +02:00
web_hook_category_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
web_hook_event_type_serializer.rb DEV: Block accidental serialization of entire AR models (#27668) 2024-07-01 17:08:48 -03:00
web_hook_flag_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
web_hook_group_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
web_hook_group_user_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
web_hook_like_serializer.rb
web_hook_post_serializer.rb FEATURE: Allow expanding hidden posts for groups in SiteSetting.can_see_hidden_post (#21853) 2023-06-01 11:32:05 +08:00
web_hook_topic_view_serializer.rb DEV: Remove summarization code (#27373) 2024-07-02 08:51:47 -07:00
web_hook_user_serializer.rb DEV: allow themes to render their own custom homepage (#26291) 2024-04-02 11:05:08 -04:00
wizard_field_choice_serializer.rb
wizard_field_serializer.rb DEV: Apply syntax_tree formatting to `app/*` 2023-01-09 14:14:59 +00:00
wizard_serializer.rb
wizard_step_serializer.rb DEV: Cleanup unused wizard illustrations (#23659) 2023-09-26 10:34:38 +08:00