mirror of
https://github.com/TermoraDev/termora.git
synced 2026-01-16 02:12:58 +08:00
chore: improve plugin restart prompt
This commit is contained in:
@@ -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()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user