浏览代码

Various optimizations related to library extraction.

Updated PackXZExtract to v1.0.1.
If no files are queued for extraction, the step is skipped.
The UI now shows some indication that the extraction is in progress.
Daniel Scalzi 7 年之前
父节点
当前提交
ea758aee1f
共有 3 个文件被更改,包括 43 次插入6 次删除
  1. 8 4
      app/assets/js/assetguard.js
  2. 35 2
      app/assets/js/scripts/landing.js
  3. 二进制
      libraries/java/PackXZExtract.jar

+ 8 - 4
app/assets/js/assetguard.js

@@ -1574,11 +1574,15 @@ class AssetGuard extends EventEmitter {
                 self.progress -= self[identifier].dlsize
                 self.progress -= self[identifier].dlsize
                 self[identifier] = new DLTracker([], 0)
                 self[identifier] = new DLTracker([], 0)
                 if(self.totaldlsize === 0) {
                 if(self.totaldlsize === 0) {
-                    self.emit('extracting')
-                    AssetGuard._extractPackXZ(self.extractQueue, self.javaexec).then(() => {
-                        self.extractQueue = []
+                    if(self.extractQueue.length > 0){
+                        self.emit('extracting')
+                        AssetGuard._extractPackXZ(self.extractQueue, self.javaexec).then(() => {
+                            self.extractQueue = []
+                            self.emit('dlcomplete')
+                        })
+                    } else {
                         self.emit('dlcomplete')
                         self.emit('dlcomplete')
-                    })
+                    }
                 }
                 }
             })
             })
             return true
             return true

+ 35 - 2
app/assets/js/scripts/landing.js

@@ -216,6 +216,8 @@ let serverStatusListener = setInterval(() => refreshServerStatus(true), 300000)
 let sysAEx
 let sysAEx
 let scanAt
 let scanAt
 
 
+let extractListener
+
 function asyncSystemScan(launchAfter = true){
 function asyncSystemScan(launchAfter = true){
 
 
     setLaunchDetails('Please wait..')
     setLaunchDetails('Please wait..')
@@ -315,7 +317,17 @@ function asyncSystemScan(launchAfter = true){
                 remote.getCurrentWindow().setProgressBar(-1)
                 remote.getCurrentWindow().setProgressBar(-1)
 
 
                 // Wait for extration to complete.
                 // Wait for extration to complete.
-                setLaunchDetails('Extracting..')
+                const eLStr = 'Extracting'
+                let dotStr = ''
+                setLaunchDetails(eLStr)
+                extractListener = setInterval(() => {
+                    if(dotStr.length >= 3){
+                        dotStr = ''
+                    } else {
+                        dotStr += '.'
+                    }
+                    setLaunchDetails(eLStr + dotStr)
+                }, 750)
 
 
             } else if(m.task === 2){
             } else if(m.task === 2){
 
 
@@ -323,6 +335,11 @@ function asyncSystemScan(launchAfter = true){
                 ConfigManager.setJavaExecutable(m.jPath)
                 ConfigManager.setJavaExecutable(m.jPath)
                 ConfigManager.save()
                 ConfigManager.save()
 
 
+                if(extractListener != null){
+                    clearInterval(extractListener)
+                    extractListener = null
+                }
+
                 setLaunchDetails('Java Installed!')
                 setLaunchDetails('Java Installed!')
 
 
                 if(launchAfter){
                 if(launchAfter){
@@ -356,6 +373,8 @@ let serv
 let versionData
 let versionData
 let forgeData
 let forgeData
 
 
+let progressListener
+
 function dlAsync(login = true){
 function dlAsync(login = true){
 
 
     // Login parameter is temporary for debug purposes. Allows testing the validation/downloads without
     // Login parameter is temporary for debug purposes. Allows testing the validation/downloads without
@@ -443,12 +462,26 @@ function dlAsync(login = true){
             } else if(m.task === 0.7){
             } else if(m.task === 0.7){
                 
                 
                 // Download done, extracting.
                 // Download done, extracting.
-                setLaunchDetails('Extracting libraries..')
+                const eLStr = 'Extracting libraries'
+                let dotStr = ''
+                setLaunchDetails(eLStr)
+                progressListener = setInterval(() => {
+                    if(dotStr.length >= 3){
+                        dotStr = ''
+                    } else {
+                        dotStr += '.'
+                    }
+                    setLaunchDetails(eLStr + dotStr)
+                }, 750)
 
 
             } else if(m.task === 1){
             } else if(m.task === 1){
 
 
                 // Download will be at 100%, remove the loading from the OS progress bar.
                 // Download will be at 100%, remove the loading from the OS progress bar.
                 remote.getCurrentWindow().setProgressBar(-1)
                 remote.getCurrentWindow().setProgressBar(-1)
+                if(progressListener != null){
+                    clearInterval(progressListener)
+                    progressListener = null
+                }
 
 
                 setLaunchDetails('Preparing to launch..')
                 setLaunchDetails('Preparing to launch..')
                 aEx.send({task: 0, content: 'loadForgeData', argsArr: [serv.id]})
                 aEx.send({task: 0, content: 'loadForgeData', argsArr: [serv.id]})

二进制
libraries/java/PackXZExtract.jar