mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 14:23:28 +07:00
IDEA-338866 Set time scope for feedback collection for onboardings
(cherry picked from commit 0cba21a9137f10365bacb6d998601e570940b0cd) IJ-CR-121256 GitOrigin-RevId: a90bc9c9ce1c6462c9719ed4ddd305a5e1a44f29
This commit is contained in:
committed by
intellij-monorepo-bot
parent
9106b0a3c8
commit
c52e01c89c
@@ -72,6 +72,7 @@ import training.project.ProjectUtils
|
||||
import training.ui.LearningUiHighlightingManager
|
||||
import training.ui.LearningUiManager
|
||||
import training.ui.getFeedbackProposedPropertyName
|
||||
import training.ui.shouldCollectFeedbackResults
|
||||
import training.util.*
|
||||
import java.awt.Point
|
||||
import java.awt.event.KeyEvent
|
||||
@@ -213,6 +214,10 @@ abstract class OnboardingTourLessonBase(id: String) : KLesson(id, JavaLessonsBun
|
||||
}
|
||||
|
||||
private fun prepareFeedbackData(project: Project, lessonEndInfo: LessonEndInfo) {
|
||||
if (!shouldCollectFeedbackResults()) {
|
||||
return
|
||||
}
|
||||
|
||||
val primaryLanguage = module.primaryLanguage
|
||||
if (primaryLanguage == null) {
|
||||
thisLogger().error("Onboarding lesson has no language support for some magical reason")
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
<orderEntry type="module" module-name="intellij.platform.feedback" />
|
||||
<orderEntry type="library" name="kotlinx-serialization-core" level="project" />
|
||||
<orderEntry type="library" name="kotlinx-serialization-json" level="project" />
|
||||
<orderEntry type="library" name="kotlinx-datetime-jvm" level="project" />
|
||||
<orderEntry type="module" module-name="intellij.platform.util.jdom" />
|
||||
<orderEntry type="module" module-name="intellij.platform.lvcs.impl" />
|
||||
<orderEntry type="module" module-name="intellij.platform.tips" />
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.intellij.notification.Notification
|
||||
import com.intellij.notification.NotificationAction
|
||||
import com.intellij.notification.NotificationType
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent
|
||||
import com.intellij.openapi.application.ApplicationInfo
|
||||
import com.intellij.openapi.components.service
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.ui.DialogWrapper
|
||||
@@ -28,6 +29,10 @@ import com.intellij.ui.components.JBTextArea
|
||||
import com.intellij.ui.components.JBTextField
|
||||
import com.intellij.ui.components.panels.NonOpaquePanel
|
||||
import com.intellij.util.ui.*
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.TimeZone
|
||||
import kotlinx.datetime.periodUntil
|
||||
import kotlinx.datetime.toKotlinInstant
|
||||
import kotlinx.serialization.json.*
|
||||
import org.jetbrains.annotations.Nls
|
||||
import training.dsl.LessonUtil
|
||||
@@ -54,6 +59,8 @@ private const val SUB_OFFSET = 20
|
||||
/** Increase the additional number when onboarding feedback format is changed */
|
||||
private const val FEEDBACK_JSON_VERSION = COMMON_FEEDBACK_SYSTEM_INFO_VERSION + 1
|
||||
|
||||
private const val TIME_SCOPE_FOR_RESULT_COLLECTION_IN_DAYS = 120
|
||||
|
||||
// Key for PropertiesComponent to check whether to show onboarding feedback notification or not
|
||||
fun getFeedbackProposedPropertyName(langSupport: LangSupport): String {
|
||||
val ideName = langSupport.defaultProductName?.let {
|
||||
@@ -62,6 +69,12 @@ fun getFeedbackProposedPropertyName(langSupport: LangSupport): String {
|
||||
return "ift.$ideName.onboarding.feedback.proposed"
|
||||
}
|
||||
|
||||
fun shouldCollectFeedbackResults(): Boolean {
|
||||
val buildDate = ApplicationInfo.getInstance().buildDate
|
||||
val buildToCurrentPeriod = buildDate.toInstant().toKotlinInstant().periodUntil(Clock.System.now(), TimeZone.currentSystemDefault())
|
||||
return buildToCurrentPeriod.days <= TIME_SCOPE_FOR_RESULT_COLLECTION_IN_DAYS
|
||||
}
|
||||
|
||||
fun showOnboardingFeedbackNotification(project: Project?, onboardingFeedbackData: OnboardingFeedbackData) {
|
||||
onboardingFeedbackData.feedbackHasBeenProposed()
|
||||
StatisticBase.logOnboardingFeedbackNotification(getFeedbackEntryPlace(project))
|
||||
|
||||
@@ -20,6 +20,7 @@ import kotlinx.serialization.json.put
|
||||
import training.dsl.LessonContext
|
||||
import training.lang.LangSupport
|
||||
import training.ui.LearningUiManager
|
||||
import training.ui.shouldCollectFeedbackResults
|
||||
import training.util.LessonEndInfo
|
||||
import training.util.OnboardingFeedbackData
|
||||
import java.util.concurrent.CompletableFuture
|
||||
@@ -49,6 +50,10 @@ object PythonLessonsUtil {
|
||||
primaryLanguage: LangSupport,
|
||||
lessonEndInfo: LessonEndInfo,
|
||||
usedInterpreterAtStart: String) {
|
||||
if (!shouldCollectFeedbackResults()) {
|
||||
return
|
||||
}
|
||||
|
||||
if (PropertiesComponent.getInstance().getBoolean(configPropertyName, false)) {
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user