preloader.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. const {ipcRenderer} = require('electron')
  2. const fs = require('fs-extra')
  3. const os = require('os')
  4. const path = require('path')
  5. const ConfigManager = require('./configmanager')
  6. const DistroManager = require('./distromanager')
  7. const LangLoader = require('./langloader')
  8. const logger = require('./loggerutil')('%c[Preloader]', 'color: #a02d2a; font-weight: bold')
  9. logger.log('Loading..')
  10. // Load ConfigManager
  11. ConfigManager.load()
  12. // Load Strings
  13. LangLoader.loadLanguage('en_US')
  14. function onDistroLoad(data){
  15. if(data != null){
  16. // Resolve the selected server if its value has yet to be set.
  17. if(ConfigManager.getSelectedServer() == null || data.getServer(ConfigManager.getSelectedServer()) == null){
  18. logger.log('Determining default selected server..')
  19. ConfigManager.setSelectedServer(data.getMainServer().getID())
  20. ConfigManager.save()
  21. }
  22. }
  23. ipcRenderer.send('distributionIndexDone', data != null)
  24. }
  25. // Ensure Distribution is downloaded and cached.
  26. DistroManager.pullRemote().then((data) => {
  27. logger.log('Loaded distribution index.')
  28. onDistroLoad(data)
  29. }).catch((err) => {
  30. logger.log('Failed to load distribution index.')
  31. logger.error(err)
  32. logger.log('Attempting to load an older version of the distribution index.')
  33. // Try getting a local copy, better than nothing.
  34. DistroManager.pullLocal().then((data) => {
  35. logger.log('Successfully loaded an older version of the distribution index.')
  36. onDistroLoad(data)
  37. }).catch((err) => {
  38. logger.log('Failed to load an older version of the distribution index.')
  39. logger.log('Application cannot run.')
  40. logger.error(err)
  41. onDistroLoad(null)
  42. })
  43. })
  44. // Clean up temp dir incase previous launches ended unexpectedly.
  45. fs.remove(path.join(os.tmpdir(), ConfigManager.getTempNativeFolder()), (err) => {
  46. if(err){
  47. logger.warn('Error while cleaning natives directory', err)
  48. } else {
  49. logger.log('Cleaned natives directory.')
  50. }
  51. })