From 21229e352f61ac0ebee0b84eca3f85883e820913 Mon Sep 17 00:00:00 2001 From: hstyi Date: Mon, 30 Jun 2025 17:26:25 +0800 Subject: [PATCH] chore: do not refresh during installation --- .../termora/plugin/internal/plugin/MarketplacePanel.kt | 8 ++++++++ .../app/termora/plugin/internal/plugin/PluginPanel.kt | 8 +------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/app/termora/plugin/internal/plugin/MarketplacePanel.kt b/src/main/kotlin/app/termora/plugin/internal/plugin/MarketplacePanel.kt index 776d6e4..6764f17 100644 --- a/src/main/kotlin/app/termora/plugin/internal/plugin/MarketplacePanel.kt +++ b/src/main/kotlin/app/termora/plugin/internal/plugin/MarketplacePanel.kt @@ -15,10 +15,17 @@ import java.awt.BorderLayout import java.awt.CardLayout import java.awt.event.ActionEvent import java.util.concurrent.atomic.AtomicBoolean +import java.util.concurrent.atomic.AtomicInteger import javax.swing.* class MarketplacePanel : JPanel(BorderLayout()), Disposable { + companion object { + /** + * 正在安装的数量 + */ + val installing = AtomicInteger(0) + } private val pluginsPanel = JPanel(VerticalFlowLayout(VerticalFlowLayout.TOP, 0, 8)) private val cardLayout = CardLayout() @@ -93,6 +100,7 @@ class MarketplacePanel : JPanel(BorderLayout()), Disposable { } fun reload() { + if (installing.get() > 0) return if (isLoading.compareAndSet(false, true)) { coroutineScope.launch { withContext(Dispatchers.Swing) { diff --git a/src/main/kotlin/app/termora/plugin/internal/plugin/PluginPanel.kt b/src/main/kotlin/app/termora/plugin/internal/plugin/PluginPanel.kt index 7b202ca..c2aed9c 100644 --- a/src/main/kotlin/app/termora/plugin/internal/plugin/PluginPanel.kt +++ b/src/main/kotlin/app/termora/plugin/internal/plugin/PluginPanel.kt @@ -20,7 +20,6 @@ import org.apache.commons.net.io.Util import org.jdesktop.swingx.JXLabel import org.slf4j.LoggerFactory import java.awt.Dimension -import java.util.concurrent.atomic.AtomicInteger import java.util.zip.ZipEntry import java.util.zip.ZipInputStream import javax.swing.* @@ -33,11 +32,6 @@ class PluginPanel(val descriptor: PluginPluginDescriptor) : JPanel(), Disposable private val log = LoggerFactory.getLogger(PluginPanel::class.java) private val installed = mutableSetOf() private val uninstalled = mutableSetOf() - - /** - * 正在安装的数量 - */ - private val installing = AtomicInteger(0) private val publicKey = Ed25519.generatePublic( Base64.decodeBase64("MCowBQYDK2VwAyEAHPyJ5kt2UHWYUPnWU84DOEhCCUE5FEpzdAbeTCNV31A") ) @@ -47,7 +41,7 @@ class PluginPanel(val descriptor: PluginPluginDescriptor) : JPanel(), Disposable private val updateButton = InstallButton().apply { update = true } private val installButton = InstallButton() private val uninstallButton = JButton(I18n.getString("termora.settings.plugin.uninstall")) - + private val installing get() = MarketplacePanel.installing private val restarter get() = TermoraRestarter.getInstance() private val pluginManager get() = PluginManager.getInstance() private val owner get() = SwingUtilities.getWindowAncestor(this)