From c5570569e00043f81de871aa831c9c548edf8722 Mon Sep 17 00:00:00 2001 From: Yuriy Artamonov Date: Fri, 1 Nov 2024 19:33:54 +0100 Subject: [PATCH] [diagnostics] IJPL-165781 Mute problem for freeze notification in plugins per Major.Minor IDE version (cherry picked from commit 780fc8394e471b3507f530a2ca6f16584269702a) IJ-CR-148367 GitOrigin-RevId: 8c3e65e241fae0e8bbd035f48481c64b9ed5dade --- .../messages/PluginFreezeBundle.properties | 2 +- .../freeze/PluginFreezeNotificationPanel.kt | 2 ++ .../freeze/PluginsFreezesServiceState.kt | 28 +++++++++++++++++-- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/platform/diagnostic/freezeInPluginNotifier/resources/messages/PluginFreezeBundle.properties b/platform/diagnostic/freezeInPluginNotifier/resources/messages/PluginFreezeBundle.properties index e852d9264405..d8409e021e09 100644 --- a/platform/diagnostic/freezeInPluginNotifier/resources/messages/PluginFreezeBundle.properties +++ b/platform/diagnostic/freezeInPluginNotifier/resources/messages/PluginFreezeBundle.properties @@ -1,5 +1,5 @@ action.close.panel.text=Dismiss -action.ignore.plugin.text=Ignore +action.ignore.plugin.text=Mute problem notification.content.freeze.detected={0} has encountered a slowdown notification.content.plugin.caused.freeze=Plugin ''{0}'' might be slowing things down action.report.text=Report problem diff --git a/platform/diagnostic/freezeInPluginNotifier/src/com/intellij/platform/diagnostic/plugin/freeze/PluginFreezeNotificationPanel.kt b/platform/diagnostic/freezeInPluginNotifier/src/com/intellij/platform/diagnostic/plugin/freeze/PluginFreezeNotificationPanel.kt index c623d11f5c90..2c2c0e57afb3 100644 --- a/platform/diagnostic/freezeInPluginNotifier/src/com/intellij/platform/diagnostic/plugin/freeze/PluginFreezeNotificationPanel.kt +++ b/platform/diagnostic/freezeInPluginNotifier/src/com/intellij/platform/diagnostic/plugin/freeze/PluginFreezeNotificationPanel.kt @@ -100,6 +100,8 @@ internal class PluginFreezeNotificationPanel : EditorNotificationProvider { override fun updateOnSubmit() { super.updateOnSubmit() + PluginsFreezesService.getInstance().mutePlugin(pluginDescriptor.pluginId) + LifecycleUsageTriggerCollector.pluginFreezeReported(pluginDescriptor.pluginId) closePanel(project) } diff --git a/platform/diagnostic/freezeInPluginNotifier/src/com/intellij/platform/diagnostic/plugin/freeze/PluginsFreezesServiceState.kt b/platform/diagnostic/freezeInPluginNotifier/src/com/intellij/platform/diagnostic/plugin/freeze/PluginsFreezesServiceState.kt index fccd863d5c4f..2c8156583914 100644 --- a/platform/diagnostic/freezeInPluginNotifier/src/com/intellij/platform/diagnostic/plugin/freeze/PluginsFreezesServiceState.kt +++ b/platform/diagnostic/freezeInPluginNotifier/src/com/intellij/platform/diagnostic/plugin/freeze/PluginsFreezesServiceState.kt @@ -1,6 +1,7 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.platform.diagnostic.plugin.freeze +import com.intellij.openapi.application.ApplicationInfo import com.intellij.openapi.components.* import com.intellij.openapi.extensions.PluginId import java.time.Instant @@ -22,7 +23,19 @@ internal class PluginsFreezesService : PersistentStateComponent p.pluginId == pluginIdString && p.ideVersion == ideVersion }) { + return true + } val lastNotification = state.latestNotificationTime[pluginIdString]?.let { Instant.parse(it) } ?: return false return Instant.now().isBefore(lastNotification.plus(NOTIFICATION_COOLDOWN_DAYS, ChronoUnit.DAYS)) @@ -51,5 +68,10 @@ internal class PluginsFreezesService : PersistentStateComponent = mutableMapOf(), - var mutedPlugins: MutableMap = mutableMapOf(), + var mutedPlugins: MutableList = mutableListOf(), ) + +internal class MutedPlugin: BaseState() { + var pluginId by string() + var ideVersion by string() +} \ No newline at end of file