mattermost-desktop/src/common/settings.js

89 lines
2 KiB
JavaScript
Raw Normal View History

'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
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,
trayIconTheme: 'light',
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,
useSpellChecker: true,
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
}
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
}
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;
}
2016-09-25 07:14:01 -07:00
switch (configVersion) {
case 0:
return upgrade(upgradeV0toV1(config));
default:
return config;
}
}
module.exports = {
2016-01-23 05:58:44 -08:00
version: settingsVersion,
2016-09-25 07:14:01 -07:00
upgrade,
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;
},
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);
}
var data = JSON.stringify(config, null, ' ');
fs.writeFileSync(configFile, data, 'utf8');
},
2016-09-25 07:14:01 -07:00
loadDefault
};