mattermost-desktop/src/common/settings.js

78 lines
2.1 KiB
JavaScript
Raw Normal View History

'use strict';
const fs = require('fs');
2017-09-07 16:20:48 -07:00
const path = require('path');
const buildConfig = require('./config/buildConfig');
2016-01-23 05:58:44 -08:00
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
const defaultPreferences = require('./config/defaultPreferences');
const upgradePreferences = require('./config/upgradePreferences');
2017-09-07 12:00:02 -07:00
function loadDefault(spellCheckerLocale) {
const config = JSON.parse(JSON.stringify(defaultPreferences));
return Object.assign({}, config, {
spellCheckerLocale: spellCheckerLocale || defaultPreferences.pellCheckerLocale || 'en-US'
2017-09-07 12:00:02 -07:00
});
2016-09-25 07:14:01 -07:00
}
function hasBuildConfigDefaultTeams(config) {
return config.defaultTeams.length > 0;
2016-09-25 07:14:01 -07:00
}
function upgrade(config) {
return upgradePreferences(config);
2016-09-25 07:14:01 -07:00
}
module.exports = {
version: defaultPreferences.version,
2016-09-25 07:14:01 -07:00
upgrade,
2016-09-25 07:14:01 -07:00
readFileSync(configFile) {
const config = JSON.parse(fs.readFileSync(configFile, 'utf8'));
if (config.version === defaultPreferences.version) {
const defaultConfig = loadDefault();
return merge(defaultConfig, config);
2016-01-23 05:58:44 -08:00
}
return config;
},
writeFile(configFile, config, callback) {
if (config.version !== defaultPreferences.version) {
throw new Error('version ' + config.version + ' is not equal to ' + defaultPreferences.version);
}
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 !== defaultPreferences.version) {
throw new Error('version ' + config.version + ' is not equal to ' + defaultPreferences.version);
}
2017-09-07 16:20:48 -07:00
const dir = path.dirname(configFile);
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
var data = JSON.stringify(config, null, ' ');
fs.writeFileSync(configFile, data, 'utf8');
},
loadDefault,
mergeDefaultTeams(teams) {
const newTeams = [];
if (hasBuildConfigDefaultTeams(buildConfig)) {
newTeams.push(...JSON.parse(JSON.stringify(buildConfig.defaultTeams)));
}
if (buildConfig.enableServerManagement) {
newTeams.push(...JSON.parse(JSON.stringify(teams)));
}
return newTeams;
}
};