2015-12-13 05:57:31 -08:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const fs = require('fs');
|
2016-01-23 05:58:44 -08:00
|
|
|
const settingsVersion = 1;
|
|
|
|
|
2016-09-25 07:14:01 -07:00
|
|
|
function merge(base, target) {
|
|
|
|
return Object.assign({}, base, target);
|
|
|
|
}
|
2016-01-23 05:58:44 -08:00
|
|
|
|
2017-04-26 08:42:48 -07:00
|
|
|
function loadDefault(version, spellCheckerLocale) {
|
2016-09-25 07:14:01 -07:00
|
|
|
var ver = version;
|
2016-01-23 05:58:44 -08:00
|
|
|
if (version == null) {
|
2016-09-25 07:14:01 -07:00
|
|
|
ver = settingsVersion;
|
2016-01-23 05:58:44 -08:00
|
|
|
}
|
2016-09-25 07:14:01 -07:00
|
|
|
switch (ver) {
|
|
|
|
case 1:
|
|
|
|
return {
|
|
|
|
teams: [],
|
|
|
|
showTrayIcon: false,
|
2016-12-27 06:37:38 -08:00
|
|
|
trayIconTheme: 'light',
|
2016-12-06 08:06:59 -08:00
|
|
|
minimizeToTray: false,
|
2016-09-25 07:14:01 -07:00
|
|
|
version: 1,
|
|
|
|
notifications: {
|
|
|
|
flashWindow: 0 // 0 = flash never, 1 = only when idle (after 10 seconds), 2 = always
|
|
|
|
},
|
2017-04-20 05:32:34 -07:00
|
|
|
showUnreadBadge: true,
|
2017-05-03 04:30:23 -07:00
|
|
|
useSpellChecker: true,
|
2017-04-26 08:42:48 -07:00
|
|
|
spellCheckerLocale: spellCheckerLocale || 'en-US'
|
2016-09-25 07:14:01 -07:00
|
|
|
};
|
|
|
|
default:
|
|
|
|
return {};
|
2016-01-23 05:58:44 -08:00
|
|
|
}
|
2016-09-25 07:14:01 -07:00
|
|
|
}
|
2015-12-13 05:57:31 -08:00
|
|
|
|
2016-09-25 07:14:01 -07:00
|
|
|
function upgradeV0toV1(configV0) {
|
2016-01-23 05:58:44 -08:00
|
|
|
var config = loadDefault(1);
|
|
|
|
config.teams.push({
|
|
|
|
name: 'Primary team',
|
2016-09-25 07:14:01 -07:00
|
|
|
url: configV0.url
|
2016-01-23 05:58:44 -08:00
|
|
|
});
|
|
|
|
return config;
|
2016-09-25 07:14:01 -07:00
|
|
|
}
|
2015-12-13 05:57:31 -08:00
|
|
|
|
2016-09-25 07:14:01 -07:00
|
|
|
function upgrade(config, newAppVersion) {
|
|
|
|
var configVersion = config.version ? config.version : 0;
|
|
|
|
if (newAppVersion) {
|
2016-10-19 02:35:32 -07:00
|
|
|
config.lastMattermostVersion = newAppVersion;
|
2015-12-13 05:57:31 -08:00
|
|
|
}
|
2016-09-25 07:14:01 -07:00
|
|
|
switch (configVersion) {
|
|
|
|
case 0:
|
|
|
|
return upgrade(upgradeV0toV1(config));
|
|
|
|
default:
|
|
|
|
return config;
|
|
|
|
}
|
|
|
|
}
|
2015-12-13 05:57:31 -08:00
|
|
|
|
|
|
|
module.exports = {
|
2016-01-23 05:58:44 -08:00
|
|
|
version: settingsVersion,
|
2015-12-13 05:57:31 -08:00
|
|
|
|
2016-09-25 07:14:01 -07:00
|
|
|
upgrade,
|
2015-12-13 05:57:31 -08:00
|
|
|
|
2016-09-25 07:14:01 -07:00
|
|
|
readFileSync(configFile) {
|
2016-01-23 05:58:44 -08:00
|
|
|
var config = JSON.parse(fs.readFileSync(configFile, 'utf8'));
|
|
|
|
if (config.version === settingsVersion) {
|
2016-09-25 07:14:01 -07:00
|
|
|
var defaultConfig = this.loadDefault();
|
|
|
|
config = merge(defaultConfig, config);
|
2016-01-23 05:58:44 -08:00
|
|
|
}
|
|
|
|
return config;
|
2015-12-13 05:57:31 -08:00
|
|
|
},
|
|
|
|
|
2017-02-16 04:55:44 -08:00
|
|
|
writeFile(configFile, config, callback) {
|
|
|
|
if (config.version !== settingsVersion) {
|
|
|
|
throw new Error('version ' + config.version + ' is not equal to ' + settingsVersion);
|
|
|
|
}
|
|
|
|
var data = JSON.stringify(config, null, ' ');
|
|
|
|
fs.writeFile(configFile, data, 'utf8', callback);
|
|
|
|
},
|
|
|
|
|
2016-09-25 07:14:01 -07:00
|
|
|
writeFileSync(configFile, config) {
|
|
|
|
if (config.version !== settingsVersion) {
|
|
|
|
throw new Error('version ' + config.version + ' is not equal to ' + settingsVersion);
|
2015-12-13 05:57:31 -08:00
|
|
|
}
|
|
|
|
var data = JSON.stringify(config, null, ' ');
|
|
|
|
fs.writeFileSync(configFile, data, 'utf8');
|
2016-01-14 06:27:37 -08:00
|
|
|
},
|
|
|
|
|
2016-09-25 07:14:01 -07:00
|
|
|
loadDefault
|
2015-12-13 05:57:31 -08:00
|
|
|
};
|