discourse/config/initializers
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
..
000-development_reload_warnings.rb DEV: Further refine development reload for plugin files (#22141) 2023-06-16 16:15:15 +08:00
000-mini_sql.rb
000-post_migration.rb
000-trace_pg_connections.rb
000-zeitwerk.rb DEV: chat streaming (#25736) 2024-02-20 09:49:19 +01:00
001-redis.rb
002-freedom_patches.rb DEV: Upgrade Rails to version 7.1 2024-07-04 10:58:21 +02:00
002-rails_failover.rb DEV: Upgrade Rails to version 7.1 2024-07-04 10:58:21 +02:00
004-message_bus.rb FIX: serialize Flags instead of PostActionType (#28259) 2024-08-13 11:22:37 +10:00
005-site_settings.rb
006-ensure_login_hint.rb
006-mini_profiler.rb FEATURE: Add experimental option for strict-dynamic CSP (#25664) 2024-02-16 11:16:54 +00:00
008-rack-cors.rb DEV: Update to lastest rubocop-discourse 2024-05-27 18:06:14 +02:00
009-omniauth.rb
012-web_hook_events.rb FEATURE: Add webhooks for user suspend and unsuspend (#23684) 2023-09-28 10:51:05 +02:00
013-excon_defaults.rb
014-track-setting-changes.rb DEV: Introduce hidden `s3_inventory_bucket` site setting (#27304) 2024-06-10 13:16:00 +08:00
099-anon-cache.rb FEATURE: Add experimental option for strict-dynamic CSP (#25664) 2024-02-16 11:16:54 +00:00
099-drain_pool.rb
100-active-support-type-extensions.rb DEV: Move more service code to core (#26613) 2024-04-12 13:14:19 +02:00
100-i18n.rb
100-logster.rb DEV: Upgrade Rails to version 7.1 2024-07-04 10:58:21 +02:00
100-oj.rb
100-onebox_options.rb FEATURE: use new site setting for onebox custom user agent. (#28045) 2024-07-24 04:45:30 +05:30
100-push-notifications.rb
100-quiet_logger.rb DEV: Upgrade Rails to version 7.1 2024-07-04 10:58:21 +02:00
100-regex-timeout.rb DEV: Introduce regex_timeout_seconds global setting (#20774) 2023-03-22 12:01:35 +00:00
100-secret_token.rb
100-session_store.rb DEV: allow developers to use HTTPS if they wish (#26384) 2024-03-27 10:48:04 +11:00
100-sidekiq.rb DEV: Log a warning message when a MiniScheduler scheduled job is stuck (#28258) 2024-08-08 12:20:16 +08:00
100-silence_logger.rb DEV: Upgrade Rails to version 7.1 2024-07-04 10:58:21 +02:00
100-strong_parameters.rb
100-verify_config.rb
100-wrap_parameters.rb
101-lograge.rb DEV: Drop `logging_provider` site setting (#27785) 2024-07-09 10:00:44 +08:00
102-truncate-logs.rb DEV: Upgrade Rails to version 7.1 2024-07-04 10:58:21 +02:00
200-first_middlewares.rb FIX: Set sane default for `Net::HTTP` when processing a request (#28141) 2024-08-06 07:12:42 +08:00
300-perf.rb
400-deprecations.rb
assets.rb DEV: Update confirm-email flows to use central 2fa and ember rendering (#25404) 2024-01-30 10:32:42 +00:00
filter_parameter_logging.rb