2017-12-01 23:59:25 -08:00
|
|
|
const {AssetGuard} = require('./assetguard.js')
|
2017-12-02 19:41:47 -08:00
|
|
|
const ConfigManager = require('./configmanager.js')
|
2018-05-06 22:34:57 -07:00
|
|
|
const {ipcRenderer} = require('electron')
|
2018-04-14 21:00:08 -07:00
|
|
|
const os = require('os')
|
2017-12-02 19:41:47 -08:00
|
|
|
const path = require('path')
|
2018-04-14 21:00:08 -07:00
|
|
|
const rimraf = require('rimraf')
|
2017-12-01 23:59:25 -08:00
|
|
|
|
2018-04-25 23:01:46 -07:00
|
|
|
console.log('%c[Preloader]', 'color: #a02d2a; font-weight: bold', 'Loading..')
|
2017-12-01 23:59:25 -08:00
|
|
|
|
2017-12-02 21:38:22 -08:00
|
|
|
// Load ConfigManager
|
|
|
|
ConfigManager.load()
|
2017-12-02 19:41:47 -08:00
|
|
|
|
2018-05-08 03:34:16 -07:00
|
|
|
function onDistroLoad(data){
|
|
|
|
if(data != null){
|
|
|
|
|
|
|
|
// Resolve the selected server if its value has yet to be set.
|
2018-05-08 17:10:46 -07:00
|
|
|
if(ConfigManager.getSelectedServer() == null || AssetGuard.getServerById(ConfigManager.getSelectedServer()) == null){
|
|
|
|
console.log('%c[Preloader]', 'color: #a02d2a; font-weight: bold', 'Determining default selected server..')
|
|
|
|
ConfigManager.setSelectedServer(AssetGuard.resolveSelectedServer().id)
|
2018-05-08 03:34:16 -07:00
|
|
|
ConfigManager.save()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ipcRenderer.send('distributionIndexDone', data)
|
|
|
|
}
|
|
|
|
|
2017-12-02 21:38:22 -08:00
|
|
|
// Ensure Distribution is downloaded and cached.
|
2018-05-08 17:10:46 -07:00
|
|
|
AssetGuard.refreshDistributionDataRemote(ConfigManager.getLauncherDirectory()).then((data) => {
|
2018-05-06 22:34:57 -07:00
|
|
|
console.log('%c[Preloader]', 'color: #a02d2a; font-weight: bold', 'Loaded distribution index.')
|
2017-12-02 19:41:47 -08:00
|
|
|
|
2018-05-08 03:34:16 -07:00
|
|
|
onDistroLoad(data)
|
2018-05-06 22:34:57 -07:00
|
|
|
|
2018-05-08 03:34:16 -07:00
|
|
|
}).catch((err) => {
|
2018-05-06 22:34:57 -07:00
|
|
|
console.log('%c[Preloader]', 'color: #a02d2a; font-weight: bold', 'Failed to load distribution index.')
|
2018-05-08 03:34:16 -07:00
|
|
|
console.error(err)
|
|
|
|
|
|
|
|
console.log('%c[Preloader]', 'color: #a02d2a; font-weight: bold', 'Attempting to load an older version of the distribution index.')
|
|
|
|
// Try getting a local copy, better than nothing.
|
2018-05-22 05:41:22 -07:00
|
|
|
AssetGuard.refreshDistributionDataLocal(ConfigManager.getLauncherDirectory()).then((data) => {
|
2018-05-08 03:34:16 -07:00
|
|
|
console.log('%c[Preloader]', 'color: #a02d2a; font-weight: bold', 'Successfully loaded an older version of the distribution index.')
|
|
|
|
|
|
|
|
onDistroLoad(data)
|
|
|
|
|
|
|
|
|
|
|
|
}).catch((err) => {
|
|
|
|
|
|
|
|
console.log('%c[Preloader]', 'color: #a02d2a; font-weight: bold', 'Failed to load an older version of the distribution index.')
|
|
|
|
console.log('%c[Preloader]', 'color: #a02d2a; font-weight: bold', 'Application cannot run.')
|
|
|
|
console.error(err)
|
|
|
|
|
|
|
|
onDistroLoad(null)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
2018-05-06 22:34:57 -07:00
|
|
|
})
|
2018-04-14 21:00:08 -07:00
|
|
|
|
2018-04-14 21:49:20 -07:00
|
|
|
// Clean up temp dir incase previous launches ended unexpectedly.
|
2018-04-14 21:00:08 -07:00
|
|
|
rimraf(path.join(os.tmpdir(), ConfigManager.getTempNativeFolder()), (err) => {
|
|
|
|
if(err){
|
2018-04-25 23:01:46 -07:00
|
|
|
console.warn('%c[Preloader]', 'color: #a02d2a; font-weight: bold', 'Error while cleaning natives directory', err)
|
2018-04-14 21:00:08 -07:00
|
|
|
} else {
|
2018-04-25 23:01:46 -07:00
|
|
|
console.log('%c[Preloader]', 'color: #a02d2a; font-weight: bold', 'Cleaned natives directory.')
|
2018-04-14 21:00:08 -07:00
|
|
|
}
|
|
|
|
})
|