chore: improve plugin restart prompt

This commit is contained in:
hstyi
2025-06-28 17:03:42 +08:00
committed by hstyi
parent 4bca15dbb0
commit 70fc5e3228

View File

@@ -20,6 +20,7 @@ import org.apache.commons.net.io.Util
import org.jdesktop.swingx.JXLabel import org.jdesktop.swingx.JXLabel
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
import java.awt.Dimension import java.awt.Dimension
import java.util.concurrent.atomic.AtomicInteger
import java.util.zip.ZipEntry import java.util.zip.ZipEntry
import java.util.zip.ZipInputStream import java.util.zip.ZipInputStream
import javax.swing.* import javax.swing.*
@@ -32,6 +33,11 @@ class PluginPanel(val descriptor: PluginPluginDescriptor) : JPanel(), Disposable
private val log = LoggerFactory.getLogger(PluginPanel::class.java) private val log = LoggerFactory.getLogger(PluginPanel::class.java)
private val installed = mutableSetOf<String>() private val installed = mutableSetOf<String>()
private val uninstalled = mutableSetOf<String>() private val uninstalled = mutableSetOf<String>()
/**
* 正在安装的数量
*/
private val installing = AtomicInteger(0)
private val publicKey = Ed25519.generatePublic( private val publicKey = Ed25519.generatePublic(
Base64.decodeBase64("MCowBQYDK2VwAyEAHPyJ5kt2UHWYUPnWU84DOEhCCUE5FEpzdAbeTCNV31A") Base64.decodeBase64("MCowBQYDK2VwAyEAHPyJ5kt2UHWYUPnWU84DOEhCCUE5FEpzdAbeTCNV31A")
) )
@@ -205,7 +211,7 @@ class PluginPanel(val descriptor: PluginPluginDescriptor) : JPanel(), Disposable
button.installing = true button.installing = true
button.progress = 0 button.progress = 0
button.isEnabled = false button.isEnabled = false
installing.incrementAndGet()
val job = swingCoroutineScope.launch(Dispatchers.IO) { val job = swingCoroutineScope.launch(Dispatchers.IO) {
try { try {
@@ -229,7 +235,11 @@ class PluginPanel(val descriptor: PluginPluginDescriptor) : JPanel(), Disposable
withContext(Dispatchers.Swing) { withContext(Dispatchers.Swing) {
installed.add(descriptor.id) installed.add(descriptor.id)
restarter.scheduleRestart(owner)
// 当有多个插件正在安装时,那么最后一个安装成功的询问是否重启
if (installing.get() <= 1) {
restarter.scheduleRestart(owner)
}
// 如果是更新,那么也需要刷新 InstalledPanel 下的按钮状态 // 如果是更新,那么也需要刷新 InstalledPanel 下的按钮状态
if (button == updateButton) { if (button == updateButton) {
@@ -261,6 +271,7 @@ class PluginPanel(val descriptor: PluginPluginDescriptor) : JPanel(), Disposable
} }
} finally { } finally {
withContext(Dispatchers.Swing) { withContext(Dispatchers.Swing) {
installing.decrementAndGet()
button.installing = false button.installing = false
refreshButtons() refreshButtons()
} }