소스 검색

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. BIN
      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[identifier] = new DLTracker([], 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')
-                    })
+                    }
                 }
             })
             return true

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

@@ -216,6 +216,8 @@ let serverStatusListener = setInterval(() => refreshServerStatus(true), 300000)
 let sysAEx
 let scanAt
 
+let extractListener
+
 function asyncSystemScan(launchAfter = true){
 
     setLaunchDetails('Please wait..')
@@ -315,7 +317,17 @@ function asyncSystemScan(launchAfter = true){
                 remote.getCurrentWindow().setProgressBar(-1)
 
                 // 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){
 
@@ -323,6 +335,11 @@ function asyncSystemScan(launchAfter = true){
                 ConfigManager.setJavaExecutable(m.jPath)
                 ConfigManager.save()
 
+                if(extractListener != null){
+                    clearInterval(extractListener)
+                    extractListener = null
+                }
+
                 setLaunchDetails('Java Installed!')
 
                 if(launchAfter){
@@ -356,6 +373,8 @@ let serv
 let versionData
 let forgeData
 
+let progressListener
+
 function dlAsync(login = true){
 
     // 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){
                 
                 // 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){
 
                 // Download will be at 100%, remove the loading from the OS progress bar.
                 remote.getCurrentWindow().setProgressBar(-1)
+                if(progressListener != null){
+                    clearInterval(progressListener)
+                    progressListener = null
+                }
 
                 setLaunchDetails('Preparing to launch..')
                 aEx.send({task: 0, content: 'loadForgeData', argsArr: [serv.id]})

BIN
libraries/java/PackXZExtract.jar