[plugin management] IJPL-247998 Make PluginUpdateHandler.installUpdates companion non-blocking

And rename -> installUpdatesInBackground.

The caller expects it to be non-blocking as previously used `PluginUpdateDialog.runUpdateAll` has already been.


Merge-request: IJ-MR-210433
Merged-by: Konstantin Ripak <konstantin.ripak@jetbrains.com>

GitOrigin-RevId: 6b8e91ee8e15b68da8d0fc1af35bfccb93f630e6
This commit is contained in:
Kostya Ripak
2026-08-11 14:33:03 +00:00
committed by intellij-monorepo-bot
parent e7318e3b1f
commit e32d9695d0
2 changed files with 7 additions and 3 deletions
@@ -184,7 +184,7 @@ public class PluginUpdateDialog extends DialogWrapper {
public static boolean showDialogAndUpdate(@NotNull PluginUpdateDialog dialog) {
if (dialog.showAndGet()) {
PluginUpdateHandler.installUpdates(dialog.getSelectedPluginModels(), dialog.getContentPanel(), dialog.myFinishCallback, null);
PluginUpdateHandler.installUpdatesInBackground(dialog.getSelectedPluginModels(), dialog.getContentPanel(), dialog.myFinishCallback, null);
return true;
}
return false;
@@ -3,8 +3,12 @@ package com.intellij.openapi.updateSettings.impl
import com.intellij.ide.plugins.api.PluginDto
import com.intellij.ide.plugins.newui.PluginUiModel
import com.intellij.openapi.components.service
import com.intellij.openapi.progress.ProgressIndicator
import com.intellij.openapi.progress.runBlockingMaybeCancellable
import com.intellij.platform.ide.CoreUiCoroutineScopeHolder
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
import org.jetbrains.annotations.ApiStatus
@@ -26,13 +30,13 @@ interface PluginUpdateHandler {
fun getInstance(): PluginUpdateHandler = PluginUpdateHandlerProvider.getInstance().getPluginUpdateHandler()
@JvmStatic
fun installUpdates(
fun installUpdatesInBackground(
updates: Collection<PluginUiModel>,
component: JComponent?,
finishCallback: Runnable?,
customRestarter: Consumer<Boolean>? = null,
) {
runBlockingMaybeCancellable {
service<CoreUiCoroutineScopeHolder>().coroutineScope.launch(Dispatchers.IO) {
getInstance().installUpdates(updates, component, finishCallback, customRestarter)
}
}