Skip to content

Commit

Permalink
added checking of the new plugin version available (#154)
Browse files Browse the repository at this point in the history
  • Loading branch information
i582 authored Jun 28, 2022
1 parent 2966936 commit 4df435e
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 6 deletions.
3 changes: 2 additions & 1 deletion src/main/kotlin/com/vk/admstorm/AdmService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.intellij.json.psi.impl.JsonRecursiveElementVisitor
import com.intellij.openapi.components.Service
import com.intellij.openapi.components.service
import com.intellij.openapi.diagnostic.logger
import com.intellij.openapi.extensions.PluginId
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiManager
import com.vk.admstorm.utils.MyPathUtils
Expand All @@ -14,7 +15,7 @@ import com.vk.admstorm.utils.MyUtils
class AdmService(private var myProject: Project) {
companion object {
private val LOG = logger<AdmService>()
const val PLUGIN_ID = "com.vk.admstorm"
val PLUGIN_ID = PluginId.getId("com.vk.admstorm")

fun getInstance(project: Project) = project.service<AdmService>()
}
Expand Down
32 changes: 30 additions & 2 deletions src/main/kotlin/com/vk/admstorm/AdmStormStartupActivity.kt
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
package com.vk.admstorm

import com.intellij.ide.BrowserUtil
import com.intellij.ide.plugins.InstalledPluginsState
import com.intellij.ide.plugins.PluginManagerCore
import com.intellij.ide.util.RunOnceUtil
import com.intellij.openapi.application.ApplicationActivationListener
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.invokeLater
import com.intellij.openapi.components.Service
import com.intellij.openapi.components.service
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.diagnostic.logger
import com.intellij.openapi.editor.EditorFactory
import com.intellij.openapi.editor.ex.EditorEventMulticasterEx
import com.intellij.openapi.extensions.PluginId
import com.intellij.openapi.fileTypes.ex.FileTypeChooser
import com.intellij.openapi.fileTypes.impl.AbstractFileType
import com.intellij.openapi.options.ShowSettingsUtil
import com.intellij.openapi.progress.ProgressManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.startup.StartupActivity
Expand Down Expand Up @@ -135,7 +138,7 @@ class AdmStormStartupActivity : StartupActivity {
}

private fun showWelcomeMessage(project: Project) {
val plugin = PluginManagerCore.getPlugin(PluginId.getId(AdmService.PLUGIN_ID)) ?: return
val plugin = PluginManagerCore.getPlugin(AdmService.PLUGIN_ID) ?: return
RunOnceUtil.runOnceForApp("com.vk.admstorm.welcome.test.message.${plugin.version}") {
AdmNotification(
"""
Expand Down Expand Up @@ -246,12 +249,37 @@ class AdmStormStartupActivity : StartupActivity {
}
}

checkUpdates(project)

// Это необходимо чтобы для бенчмарков показывались все пункты в списке
// который открывается при клике на иконку рядом с классом или методом.
val key = Registry.get("suggest.all.run.configurations.from.context")
key.setValue(true)
}

private fun checkUpdates(project: Project) {
val hasNewerVersion = InstalledPluginsState.getInstance().hasNewerVersion(AdmService.PLUGIN_ID)
if (!hasNewerVersion) {
return
}

AdmNotification("New version of the plugin is available")
.withActions(
AdmNotification.Action("Update") { _, _ ->
invokeLater {
ShowSettingsUtil.getInstance().showSettingsDialog(project, "Plugins")
}
}
)
.withActions(
AdmNotification.Action("What's new") { _, _ ->
val url = "https://vkcom.github.io/admstorm/whatsnew.html?server_name=${ServerNameProvider.name()}"
BrowserUtil.browse(url)
}
)
.show(project)
}

private fun setupLogger(project: Project) {
val defaultLoggerFactory = Logger.getFactory()
val sentry = SentryService.getInstance(project)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import com.vk.admstorm.services.SentryService

class AdmStormLoggerFactory(private val sentry: SentryService, private val factoryDelegate: Logger.Factory) : Logger.Factory {
override fun getLoggerInstance(category: String): Logger {
if (category.contains(AdmService.PLUGIN_ID)) {
if (category.contains(AdmService.PLUGIN_ID.idString)) {
return AdmStormLogger(sentry, factoryDelegate, category)
}

Expand Down
3 changes: 1 addition & 2 deletions src/main/kotlin/com/vk/admstorm/services/SentryService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import com.intellij.openapi.application.PathManager
import com.intellij.openapi.components.Service
import com.intellij.openapi.components.service
import com.intellij.openapi.diagnostic.logger
import com.intellij.openapi.extensions.PluginId
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.SystemInfo
import com.vk.admstorm.AdmService
Expand Down Expand Up @@ -35,7 +34,7 @@ class SentryService(project: Project) {

init {
val config = ConfigService.getInstance(project)
val plugin = PluginManagerCore.getPlugin(PluginId.getId(AdmService.PLUGIN_ID))
val plugin = PluginManagerCore.getPlugin(AdmService.PLUGIN_ID)
val application = ApplicationInfo.getInstance()

if (config.sentryDsn.isEmpty()) {
Expand Down

0 comments on commit 4df435e

Please sign in to comment.