Added failsafe to configuration loading.

If file is malformed or corrupt, generate a fresh configuration file.
This commit is contained in:
Daniel Scalzi 2018-08-13 06:31:46 -04:00
parent 1566ff4e4c
commit 4f416220c2
No known key found for this signature in database
GPG Key ID: 5CA2F145B63535F9
2 changed files with 23 additions and 5 deletions

View File

@ -101,9 +101,22 @@ exports.load = function(){
config = DEFAULT_CONFIG config = DEFAULT_CONFIG
exports.save() exports.save()
} else { } else {
config = JSON.parse(fs.readFileSync(filePath, 'UTF-8')) let doValidate = false
config = validateKeySet(DEFAULT_CONFIG, config) try {
exports.save() config = JSON.parse(fs.readFileSync(filePath, 'UTF-8'))
doValidate = true
} catch (err){
console.error(err)
console.log('%c[ConfigManager]', 'color: #a02d2a; font-weight: bold', 'Configuration file contains malformed JSON or is corrupt.')
console.log('%c[ConfigManager]', 'color: #a02d2a; font-weight: bold', 'Generating a new configuration file.')
mkpath.sync(path.join(filePath, '..'))
config = DEFAULT_CONFIG
exports.save()
}
if(doValidate){
config = validateKeySet(DEFAULT_CONFIG, config)
exports.save()
}
} }
console.log('%c[ConfigManager]', 'color: #a02d2a; font-weight: bold', 'Successfully Loaded') console.log('%c[ConfigManager]', 'color: #a02d2a; font-weight: bold', 'Successfully Loaded')
} }

View File

@ -361,6 +361,9 @@ const settingsCurrentAccounts = document.getElementById('settingsCurrentAccounts
function populateAuthAccounts(){ function populateAuthAccounts(){
const authAccounts = ConfigManager.getAuthAccounts() const authAccounts = ConfigManager.getAuthAccounts()
const authKeys = Object.keys(authAccounts) const authKeys = Object.keys(authAccounts)
if(authKeys.length === 0){
return
}
const selectedUUID = ConfigManager.getSelectedAccount().uuid const selectedUUID = ConfigManager.getSelectedAccount().uuid
let authAccountStr = '' let authAccountStr = ''
@ -1112,8 +1115,10 @@ function populateSettingsUpdateInformation(data){
settingsUpdateChangelogCont.style.display = 'none' settingsUpdateChangelogCont.style.display = 'none'
populateVersionInformation(remote.app.getVersion(), settingsUpdateVersionValue, settingsUpdateVersionTitle, settingsUpdateVersionCheck) populateVersionInformation(remote.app.getVersion(), settingsUpdateVersionValue, settingsUpdateVersionTitle, settingsUpdateVersionCheck)
settingsUpdateButtonStatus('Check for Updates', false, () => { settingsUpdateButtonStatus('Check for Updates', false, () => {
ipcRenderer.send('autoUpdateAction', 'checkForUpdate') if(!isDev){
settingsUpdateButtonStatus('Checking for Updates..', true) ipcRenderer.send('autoUpdateAction', 'checkForUpdate')
settingsUpdateButtonStatus('Checking for Updates..', true)
}
}) })
} }
} }