diff --git a/plugins/ide-features-trainer/onboarding/intellij.featuresTrainer.onboarding.iml b/plugins/ide-features-trainer/onboarding/intellij.featuresTrainer.onboarding.iml index 931dd35c6198..c1d7e23d6e48 100644 --- a/plugins/ide-features-trainer/onboarding/intellij.featuresTrainer.onboarding.iml +++ b/plugins/ide-features-trainer/onboarding/intellij.featuresTrainer.onboarding.iml @@ -12,5 +12,6 @@ + \ No newline at end of file diff --git a/plugins/ide-features-trainer/onboarding/resources/intellij.featuresTrainer.onboarding.xml b/plugins/ide-features-trainer/onboarding/resources/intellij.featuresTrainer.onboarding.xml index 47822a040b59..885c8a900727 100644 --- a/plugins/ide-features-trainer/onboarding/resources/intellij.featuresTrainer.onboarding.xml +++ b/plugins/ide-features-trainer/onboarding/resources/intellij.featuresTrainer.onboarding.xml @@ -1,9 +1,14 @@ + + + + + \ No newline at end of file diff --git a/plugins/ide-features-trainer/onboarding/src/com/intellij/featuresTrainer/onboarding/NewUsersOnboardingExperimentAccessorImpl.kt b/plugins/ide-features-trainer/onboarding/src/com/intellij/featuresTrainer/onboarding/NewUsersOnboardingExperimentAccessorImpl.kt new file mode 100644 index 000000000000..13714c1ffd2e --- /dev/null +++ b/plugins/ide-features-trainer/onboarding/src/com/intellij/featuresTrainer/onboarding/NewUsersOnboardingExperimentAccessorImpl.kt @@ -0,0 +1,10 @@ +package com.intellij.featuresTrainer.onboarding + +import com.intellij.platform.ide.newUsersOnboarding.NewUsersOnboardingExperiment +import training.learn.NewUsersOnboardingExperimentAccessor + +internal class NewUsersOnboardingExperimentAccessorImpl : NewUsersOnboardingExperimentAccessor { + override fun isExperimentEnabled(): Boolean { + return NewUsersOnboardingExperiment.getInstance().isEnabled() + } +} \ No newline at end of file diff --git a/plugins/ide-features-trainer/res/META-INF/plugin.xml b/plugins/ide-features-trainer/res/META-INF/plugin.xml index 9d2c7116b125..cdcb2a4a5cbc 100644 --- a/plugins/ide-features-trainer/res/META-INF/plugin.xml +++ b/plugins/ide-features-trainer/res/META-INF/plugin.xml @@ -48,6 +48,8 @@ + + diff --git a/plugins/ide-features-trainer/src/training/learn/NewUsersOnboardingExperimentAccessor.kt b/plugins/ide-features-trainer/src/training/learn/NewUsersOnboardingExperimentAccessor.kt new file mode 100644 index 000000000000..07fd45969951 --- /dev/null +++ b/plugins/ide-features-trainer/src/training/learn/NewUsersOnboardingExperimentAccessor.kt @@ -0,0 +1,25 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package training.learn + +import com.intellij.openapi.extensions.ExtensionPointName +import org.jetbrains.annotations.ApiStatus + +/** + * Temporary extension point to access the New Users Onboarding experiment state in the Features Trainer logic. + * Can't access [com.intellij.platform.ide.newUsersOnboarding.NewUsersOnboardingExperiment] directly + * because IFT can't strictly depend on New Users Onboarding. + * So, if there is no New Users Onboarding, then there are no implementations of this extension point, + * and we consider that experiment is disabled. + * + * It should be removed once the experiment is finished and default is determined. + */ +@ApiStatus.Internal +interface NewUsersOnboardingExperimentAccessor { + fun isExperimentEnabled(): Boolean + + companion object { + internal val EP_NAME: ExtensionPointName = ExtensionPointName("training.ift.newUsersOnboardingExperimentAccessor") + + fun isExperimentEnabled(): Boolean = EP_NAME.findFirstSafe { it.isExperimentEnabled() } != null + } +} \ No newline at end of file diff --git a/plugins/ide-features-trainer/src/training/ui/welcomeScreen/OnboardingLessonPromoter.kt b/plugins/ide-features-trainer/src/training/ui/welcomeScreen/OnboardingLessonPromoter.kt index 9930e4ba7f60..1d7c9520049e 100644 --- a/plugins/ide-features-trainer/src/training/ui/welcomeScreen/OnboardingLessonPromoter.kt +++ b/plugins/ide-features-trainer/src/training/ui/welcomeScreen/OnboardingLessonPromoter.kt @@ -19,6 +19,7 @@ import training.dsl.dropMnemonic import training.lang.LangManager import training.learn.CourseManager import training.learn.LearnBundle +import training.learn.NewUsersOnboardingExperimentAccessor import training.learn.OpenLessonActivities import training.learn.lesson.LessonState import training.learn.lesson.LessonStateManager @@ -46,7 +47,8 @@ open class OnboardingLessonPromoter(@NonNls protected val lessonId: String, !notificationScheduled && !PropertiesComponent.getInstance().getBoolean(PROMO_HIDDEN, false) && RecentProjectsManagerBase.getInstanceEx().getRecentPaths().size < 5 && - LessonStateManager.getStateFromBase(lessonId) == LessonState.NOT_PASSED + LessonStateManager.getStateFromBase(lessonId) == LessonState.NOT_PASSED && + !NewUsersOnboardingExperimentAccessor.isExperimentEnabled() } override val headerLabel: String