import com.intellij.feedback.npw.state.ProjectCreationInfoState
import com.intellij.notification.Notification
import com.intellij.notification.NotificationAction
+import com.intellij.openapi.application.ApplicationNamesInfo
import com.intellij.openapi.application.ex.ApplicationInfoEx
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.DialogWrapper
private val unknownProjectTypeName = "UNKNOWN"
private val testProjectTypeName = "TEST"
private val maxNumberNotificationShowed = 3
+ private val suitableIDEs = listOf("IntelliJ IDEA Community Edition", "IntelliJ IDEA Ultimate Edition")
override val suitableIdeVersion: String = "2022.1"
override fun isSuitable(): Boolean {
val projectCreationInfoState = ProjectCreationInfoService.getInstance().state
return isIntellijIdeaEAP() &&
+ checkIdeIsSuitable() &&
checkIdeVersionIsSuitable() &&
checkProjectCreationFeedbackNotSent(projectCreationInfoState) &&
checkProjectCreated(projectCreationInfoState) &&
checkNotificationNumberNotExceeded(projectCreationInfoState)
}
+ private fun checkIdeIsSuitable(): Boolean {
+ val ideName = ApplicationNamesInfo.getInstance().fullProductNameWithEdition
+ return ideName in suitableIDEs
+ }
+
private fun checkProjectCreationFeedbackNotSent(state: ProjectCreationInfoState): Boolean {
return !state.feedbackSent
}
import com.intellij.ide.AppLifecycleListener
import com.intellij.ide.feedback.kotlinRejecters.state.KotlinRejectersInfoService
import com.intellij.notification.NotificationAction
+import com.intellij.openapi.application.ApplicationNamesInfo
import com.intellij.openapi.project.Project
import com.intellij.openapi.project.ex.ProjectManagerEx
import kotlinx.datetime.Clock
companion object {
val LAST_DATE_COLLECT_FEEDBACK = LocalDate(2022, 7, 19)
const val MAX_NUMBER_NOTIFICATION_SHOWED = 3
+ private val suitableIDEs = listOf("IntelliJ IDEA Community Edition", "IntelliJ IDEA Ultimate Edition")
fun showNotification(project: Project?, forTest: Boolean) {
val notification = RequestFeedbackNotification(
}
override fun appStarted() {
+ val ideName = ApplicationNamesInfo.getInstance().fullProductNameWithEdition
+ if (ideName !in suitableIDEs) return
//Try to show only one possible feedback form - Kotlin Rejecters form
val kotlinRejectersInfoState = KotlinRejectersInfoService.getInstance().state
if (!kotlinRejectersInfoState.feedbackSent && kotlinRejectersInfoState.showNotificationAfterRestart &&
<xi:include href="/META-INF/WorkspaceModelExtensions.xml"/>
+ <xi:include href="intellij.platform.feedback.xml"/>
+
<extensions defaultExtensionNs="com.intellij">
<applicationService serviceInterface="com.intellij.ide.RecentProjectsManager"
serviceImplementation="com.intellij.ide.AttachedModuleAwareRecentProjectsManager" preload="notHeadless"/>