mirror of
https://github.com/dscalzi/HeliosLauncher.git
synced 2024-12-23 04:02:14 -08:00
74 lines
2.2 KiB
JavaScript
74 lines
2.2 KiB
JavaScript
/**
|
|
* @author Daniel D. Scalzi
|
|
* @license CC-BY-NC 4.0 - https://creativecommons.org/licenses/by-nc/4.0/
|
|
*/
|
|
|
|
const {ipcRenderer} = require('electron')
|
|
const fs = require('fs-extra')
|
|
const os = require('os')
|
|
const path = require('path')
|
|
|
|
const ConfigManager = require('./configmanager')
|
|
const DistroManager = require('./distromanager')
|
|
const LangLoader = require('./langloader')
|
|
const logger = require('./loggerutil')('%c[Preloader]', 'color: #a02d2a; font-weight: bold')
|
|
|
|
logger.log('Loading..')
|
|
|
|
// Load ConfigManager
|
|
ConfigManager.load()
|
|
|
|
// Load Strings
|
|
LangLoader.loadLanguage('en_US')
|
|
|
|
function onDistroLoad(data){
|
|
if(data != null){
|
|
|
|
// Resolve the selected server if its value has yet to be set.
|
|
if(ConfigManager.getSelectedServer() == null || data.getServer(ConfigManager.getSelectedServer()) == null){
|
|
logger.log('Determining default selected server..')
|
|
ConfigManager.setSelectedServer(data.getMainServer().getID())
|
|
ConfigManager.save()
|
|
}
|
|
}
|
|
ipcRenderer.send('distributionIndexDone', data != null)
|
|
}
|
|
|
|
// Ensure Distribution is downloaded and cached.
|
|
DistroManager.pullRemote().then((data) => {
|
|
logger.log('Loaded distribution index.')
|
|
|
|
onDistroLoad(data)
|
|
|
|
}).catch((err) => {
|
|
logger.log('Failed to load distribution index.')
|
|
logger.error(err)
|
|
|
|
logger.log('Attempting to load an older version of the distribution index.')
|
|
// Try getting a local copy, better than nothing.
|
|
DistroManager.pullLocal().then((data) => {
|
|
logger.log('Successfully loaded an older version of the distribution index.')
|
|
|
|
onDistroLoad(data)
|
|
|
|
|
|
}).catch((err) => {
|
|
|
|
logger.log('Failed to load an older version of the distribution index.')
|
|
logger.log('Application cannot run.')
|
|
logger.error(err)
|
|
|
|
onDistroLoad(null)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
// Clean up temp dir incase previous launches ended unexpectedly.
|
|
fs.remove(path.join(os.tmpdir(), ConfigManager.getTempNativeFolder()), (err) => {
|
|
if(err){
|
|
logger.warn('Error while cleaning natives directory', err)
|
|
} else {
|
|
logger.log('Cleaned natives directory.')
|
|
}
|
|
}) |