From c14b9cdd8b7320dfa1a6e2ba2d1104c09e9afe0f Mon Sep 17 00:00:00 2001 From: "Sergey.Kesarev" Date: Tue, 19 Dec 2023 17:14:48 +0000 Subject: [PATCH] Add updatedFrom param in marketplace plugin download requests Fix npe Add updatedFrom param in marketplace plugin download requests Merge-request: IJ-MR-122517 Merged-by: Sergey Kesarev GitOrigin-RevId: d858958b5afb63e04ba978269652dba9383cb638 --- .../src/com/intellij/ide/plugins/PluginManagerCore.kt | 2 +- .../ide/plugins/marketplace/utils/MarketplaceUrls.kt | 11 +++++++++-- .../openapi/updateSettings/impl/PluginDownloader.java | 3 ++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.kt b/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.kt index 30181fd2ae74..722b898595de 100644 --- a/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.kt +++ b/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.kt @@ -842,7 +842,7 @@ object PluginManagerCore { @Internal @JvmStatic fun findPlugin(id: PluginId): IdeaPluginDescriptorImpl? { - val pluginSet = getPluginSet() + val pluginSet = nullablePluginSet ?: return null return pluginSet.findEnabledPlugin(id) ?: pluginSet.findInstalledPlugin(id) } diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/marketplace/utils/MarketplaceUrls.kt b/platform/platform-impl/src/com/intellij/ide/plugins/marketplace/utils/MarketplaceUrls.kt index 58b3ab01bca0..f8cc21f6407f 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/marketplace/utils/MarketplaceUrls.kt +++ b/platform/platform-impl/src/com/intellij/ide/plugins/marketplace/utils/MarketplaceUrls.kt @@ -85,11 +85,18 @@ internal object MarketplaceUrls { } @JvmStatic - fun getPluginDownloadUrl(descriptor: IdeaPluginDescriptor, uuid: String, buildNumber: BuildNumber?): String { + fun getPluginDownloadUrl( + descriptor: IdeaPluginDescriptor, + uuid: String, + buildNumber: BuildNumber?, + currentVersion: IdeaPluginDescriptor? + ): String { + val updatedFrom = currentVersion?.version ?: "" val parameters = hashMapOf( "id" to descriptor.pluginId.idString, "build" to ApplicationInfoImpl.orFromPluginCompatibleBuild(buildNumber), - "uuid" to uuid + "uuid" to uuid, + "updatedFrom" to updatedFrom ) (descriptor as? PluginNode)?.channel?.let { parameters["channel"] = it diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/PluginDownloader.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/PluginDownloader.java index d5d6f450e900..710cb139c524 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/PluginDownloader.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/PluginDownloader.java @@ -379,9 +379,10 @@ public final class PluginDownloader { public static @NotNull PluginDownloader createDownloader(@NotNull IdeaPluginDescriptor descriptor, @Nullable String host, @Nullable BuildNumber buildNumber) throws IOException { + IdeaPluginDescriptor currentVersion = PluginManagerCore.getPlugin(descriptor.getPluginId()); String url = descriptor instanceof PluginNode && host != null ? toAbsoluteUrl(((PluginNode)descriptor).getDownloadUrl(), host) : - MarketplaceUrls.getPluginDownloadUrl(descriptor, getMarketplaceDownloadsUUID(), buildNumber); + MarketplaceUrls.getPluginDownloadUrl(descriptor, getMarketplaceDownloadsUUID(), buildNumber, currentVersion); return new PluginDownloader(descriptor, url,