mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 16:34:31 +08:00
PERF: bypass wizard check after 15 topics are created
This commit is contained in:
@ -4,12 +4,15 @@ require_dependency 'wizard/step_updater'
|
||||
require_dependency 'wizard/builder'
|
||||
|
||||
class Wizard
|
||||
|
||||
attr_reader :steps, :user
|
||||
attr_accessor :max_topics_to_require_completion
|
||||
|
||||
def initialize(user)
|
||||
@steps = []
|
||||
@user = user
|
||||
@first_step = nil
|
||||
@max_topics_to_require_completion = 15
|
||||
end
|
||||
|
||||
def create_step(step_name)
|
||||
@ -76,13 +79,20 @@ class Wizard
|
||||
|
||||
def requires_completion?
|
||||
return false unless SiteSetting.wizard_enabled?
|
||||
return false if SiteSetting.bypass_wizard_check?
|
||||
|
||||
first_admin = User.where(admin: true)
|
||||
if Topic.limit(@max_topics_to_require_completion + 1).count > @max_topics_to_require_completion
|
||||
SiteSetting.bypass_wizard_check = true
|
||||
return false
|
||||
end
|
||||
|
||||
first_admin_id = User.where(admin: true)
|
||||
.where.not(id: Discourse.system_user.id)
|
||||
.joins(:user_auth_tokens)
|
||||
.order('user_auth_tokens.created_at')
|
||||
.pluck(:id).first
|
||||
|
||||
if @user.present? && first_admin.first == @user && (Topic.count < 15)
|
||||
if @user&.id && first_admin_id == @user.id
|
||||
!Wizard::Builder.new(@user).build.completed?
|
||||
else
|
||||
false
|
||||
|
Reference in New Issue
Block a user