diff --git a/app/models/user.rb b/app/models/user.rb index 76d7873bc76..f46907f0a24 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1564,6 +1564,26 @@ class User < ActiveRecord::Base user_status && !user_status.expired? end + REDESIGN_USER_MENU_REDIS_KEY_PREFIX = "redesigned_user_menu_for_user_" + + def self.redesigned_user_menu_enabled_user_ids + Discourse.redis.scan_each(match: "#{REDESIGN_USER_MENU_REDIS_KEY_PREFIX}*").map do |key| + key.sub(REDESIGN_USER_MENU_REDIS_KEY_PREFIX, "").to_i + end + end + + def redesigned_user_menu_enabled? + Discourse.redis.get("#{REDESIGN_USER_MENU_REDIS_KEY_PREFIX}#{self.id}") == "1" + end + + def enable_redesigned_user_menu + Discourse.redis.setex("#{REDESIGN_USER_MENU_REDIS_KEY_PREFIX}#{self.id}", 6.months, "1") + end + + def disable_redesigned_user_menu + Discourse.redis.del("#{REDESIGN_USER_MENU_REDIS_KEY_PREFIX}#{self.id}") + end + protected def badge_grant diff --git a/app/serializers/current_user_serializer.rb b/app/serializers/current_user_serializer.rb index fed12820413..0625e336cf2 100644 --- a/app/serializers/current_user_serializer.rb +++ b/app/serializers/current_user_serializer.rb @@ -74,7 +74,8 @@ class CurrentUserSerializer < BasicUserSerializer :experimental_sidebar_enabled, :status, :sidebar_category_ids, - :sidebar_tag_names + :sidebar_tag_names, + :redesigned_user_menu_enabled delegate :user_stat, to: :object, private: true delegate :any_posts, :draft_count, :pending_posts_count, :read_faq?, to: :user_stat @@ -338,4 +339,11 @@ class CurrentUserSerializer < BasicUserSerializer def status UserStatusSerializer.new(object.user_status, root: false) end + + def redesigned_user_menu_enabled + if defined?(@redesigned_user_menu_enabled) + return @redesigned_user_menu_enabled + end + @redesigned_user_menu_enabled = object.redesigned_user_menu_enabled? + end end