Skip to content

Commit cce4372

Browse files
committed
created PluginsHealthCard
1 parent 9a44e7d commit cce4372

File tree

2 files changed

+50
-41
lines changed

2 files changed

+50
-41
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,19 @@
11
package com.vk.admstorm
22

3-
import com.intellij.ide.BrowserUtil
4-
import com.intellij.ide.plugins.InstalledPluginsState
53
import com.intellij.openapi.application.invokeLater
64
import com.intellij.openapi.diagnostic.Logger
75
import com.intellij.openapi.diagnostic.logger
8-
import com.intellij.openapi.extensions.PluginId
96
import com.intellij.openapi.fileTypes.ex.FileTypeChooser
107
import com.intellij.openapi.fileTypes.impl.AbstractFileType
11-
import com.intellij.openapi.options.ShowSettingsUtil
128
import com.intellij.openapi.project.Project
139
import com.intellij.openapi.startup.ProjectActivity
1410
import com.intellij.openapi.util.registry.Registry
1511
import com.vk.admstorm.diagnostic.AdmStormLoggerFactory
1612
import com.vk.admstorm.highlight.CppTypeHighlightPatcher
17-
import com.vk.admstorm.notifications.AdmNotification
1813
import com.vk.admstorm.services.SentryService
1914
import com.vk.admstorm.settings.AdmStormSettingsState
2015
import com.vk.admstorm.ssh.SshConnectionService
2116
import com.vk.admstorm.utils.MyUtils.measureTime
22-
import com.vk.admstorm.utils.ServerNameProvider
2317
import com.vk.admstorm.utils.extensions.pluginEnabled
2418

2519
class AdmStormStartupActivity : ProjectActivity {
@@ -52,8 +46,7 @@ class AdmStormStartupActivity : ProjectActivity {
5246
AdmStartupService.getInstance(project).afterConnectionTasks()
5347
}
5448
}
55-
56-
checkUpdates(project)
49+
PluginsHealthCard(project).checkUpdates()
5750

5851
// Это необходимо чтобы для бенчмарков показывались все пункты в списке
5952
// который открывается при клике на иконку рядом с классом или методом.
@@ -67,37 +60,4 @@ class AdmStormStartupActivity : ProjectActivity {
6760

6861
Logger.setFactory(AdmStormLoggerFactory(sentry, defaultLoggerFactory))
6962
}
70-
71-
private fun hasNewVersion(pluginId : PluginId): Boolean {
72-
return InstalledPluginsState.getInstance().hasNewerVersion(pluginId)
73-
}
74-
75-
private fun checkUpdates(project: Project) {
76-
val hasAdmNewerVersion = hasNewVersion(AdmService.ADM_PLUGIN_ID)
77-
val hasKphpStormNewVersion = hasNewVersion(AdmService.KPHPSTORM_PLUGIN_ID)
78-
val hasModuliteNewVersion = hasNewVersion(AdmService.MODULITE_PLUGIN_ID)
79-
80-
if (!(hasAdmNewerVersion || hasModuliteNewVersion || hasKphpStormNewVersion)) {
81-
return
82-
}
83-
84-
var updateNotification = AdmNotification("New version of the plugin is available")
85-
.withActions(
86-
AdmNotification.Action("Update") { _, _ ->
87-
invokeLater {
88-
ShowSettingsUtil.getInstance().showSettingsDialog(project, "Plugins")
89-
}
90-
}
91-
)
92-
93-
if (hasAdmNewerVersion) {
94-
updateNotification = updateNotification.withActions(
95-
AdmNotification.Action("What's new") { _, _ ->
96-
val url = "https://vkcom.github.io/admstorm/whatsnew.html?server_name=${ServerNameProvider.name()}"
97-
BrowserUtil.browse(url)
98-
}
99-
)
100-
}
101-
updateNotification.show(project)
102-
}
10363
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.vk.admstorm
2+
3+
import com.intellij.ide.BrowserUtil
4+
import com.intellij.ide.plugins.InstalledPluginsState
5+
import com.intellij.openapi.application.invokeLater
6+
import com.intellij.openapi.extensions.PluginId
7+
import com.intellij.openapi.options.ShowSettingsUtil
8+
import com.intellij.openapi.project.Project
9+
import com.vk.admstorm.notifications.AdmNotification
10+
import com.vk.admstorm.utils.ServerNameProvider
11+
12+
data class PluginsHealthCard(val project: Project) {
13+
private val admId = AdmService.ADM_PLUGIN_ID
14+
private val kphpId = AdmService.KPHPSTORM_PLUGIN_ID
15+
private val moduliteId = AdmService.MODULITE_PLUGIN_ID
16+
17+
private fun hasNewVersion(pluginId : PluginId): Boolean {
18+
return InstalledPluginsState.getInstance().hasNewerVersion(pluginId)
19+
}
20+
21+
fun checkUpdates() {
22+
val hasAdmNewerVersion = hasNewVersion(admId)
23+
val hasKphpStormNewVersion = hasNewVersion(kphpId)
24+
val hasModuliteNewVersion = hasNewVersion(moduliteId)
25+
26+
if (!(hasAdmNewerVersion || hasModuliteNewVersion || hasKphpStormNewVersion)) {
27+
return
28+
}
29+
30+
var updateNotification = AdmNotification("New version of the plugin is available")
31+
.withActions(
32+
AdmNotification.Action("Update") { _, _ ->
33+
invokeLater {
34+
ShowSettingsUtil.getInstance().showSettingsDialog(project, "Plugins")
35+
}
36+
}
37+
)
38+
39+
if (hasAdmNewerVersion) {
40+
updateNotification = updateNotification.withActions(
41+
AdmNotification.Action("What's new") { _, _ ->
42+
val url = "https://vkcom.github.io/admstorm/whatsnew.html?server_name=${ServerNameProvider.name()}"
43+
BrowserUtil.browse(url)
44+
}
45+
)
46+
}
47+
updateNotification.show(project)
48+
}
49+
}

0 commit comments

Comments
 (0)