mattermost-desktop/src/common/settings.js

80 lines
1.7 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
2016-09-25 07:14:01 -07:00
function loadDefault(version) {
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',
2016-09-25 07:14:01 -07:00
disablewebsecurity: true,
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
},
showUnreadBadge: true
};
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;
},
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
};