mattermost-desktop/src/common/settings.js

84 lines
1.9 KiB
JavaScript
Raw Normal View History

'use strict';
const fs = require('fs');
2016-01-23 05:58:44 -08:00
const settingsVersion = 1;
var merge = function(base, target) {
var merged = base;
if (!target) {
target = {};
}
for (var prop in target) {
merged[prop] = target[prop];
}
return merged;
};
var loadDefault = function(version) {
if (version == null) {
version = settingsVersion;
2016-01-23 05:58:44 -08:00
}
switch (version) {
case 1:
return {
teams: [],
hideMenuBar: false,
2016-04-11 05:51:24 -07:00
showTrayIcon: false,
trayIconTheme: '',
disablewebsecurity: true,
toggleWindowOnTrayIconClick: false,
version: 1,
notifications: {
flashWindow: 0 // 0 = flash never, 1 = only when idle (after 10 seconds), 2 = always
2016-07-15 04:04:14 -07:00
},
showUnreadBadge: true
2016-01-23 05:58:44 -08:00
};
}
};
var upgradeV0toV1 = function(config_v0) {
2016-01-23 05:58:44 -08:00
var config = loadDefault(1);
config.teams.push({
name: 'Primary team',
2016-06-27 00:14:55 -07:00
url: config_v0.url
2016-01-23 05:58:44 -08:00
});
return config;
};
2016-10-19 02:35:32 -07:00
var upgrade = function(config, newAppVersion) {
var config_version = config.version ? config.version : 0;
2016-10-19 02:35:32 -07:00
if (newAppVersion)
config.lastMattermostVersion = newAppVersion;
switch (config_version) {
case 0:
return upgrade(upgradeV0toV1(config));
default:
return config;
}
};
module.exports = {
2016-01-23 05:58:44 -08:00
version: settingsVersion,
upgrade: upgrade,
readFileSync: function(configFile) {
2016-01-23 05:58:44 -08:00
var config = JSON.parse(fs.readFileSync(configFile, 'utf8'));
if (config.version === settingsVersion) {
var default_config = this.loadDefault();
config = merge(default_config, config);
}
return config;
},
writeFileSync: function(configFile, config) {
2016-01-23 05:58:44 -08:00
if (config.version != settingsVersion) {
throw 'version ' + config.version + ' is not equal to ' + settingsVersion;
}
var data = JSON.stringify(config, null, ' ');
fs.writeFileSync(configFile, data, 'utf8');
},
2016-01-23 05:58:44 -08:00
loadDefault: loadDefault
};