settings: async'ify
* directory config * unstable app config
This commit is contained in:
@@ -118,7 +118,8 @@ exports = module.exports = {
|
||||
CLOUDRON_AVATAR_KEY: 'cloudron_avatar',
|
||||
|
||||
// testing
|
||||
_setApiServerOrigin: setApiServerOrigin
|
||||
_setApiServerOrigin: setApiServerOrigin,
|
||||
_clear: clear
|
||||
};
|
||||
|
||||
const assert = require('assert'),
|
||||
@@ -222,7 +223,7 @@ async function get(key) {
|
||||
assert.strictEqual(typeof key, 'string');
|
||||
|
||||
const result = await database.query(`SELECT ${SETTINGS_FIELDS} FROM settings WHERE name = ?`, [ key ]);
|
||||
if (result.length === 0) return gDefaults[key];
|
||||
if (result.length === 0) return null; // can't return the default value here because we might need to massage/json parse the result
|
||||
|
||||
return result[0].value;
|
||||
}
|
||||
@@ -381,29 +382,17 @@ function setDynamicDnsConfig(enabled, callback) {
|
||||
});
|
||||
}
|
||||
|
||||
function getUnstableAppsConfig(callback) {
|
||||
assert.strictEqual(typeof callback, 'function');
|
||||
|
||||
settingsdb.get(exports.UNSTABLE_APPS_KEY, function (error, enabled) {
|
||||
if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.UNSTABLE_APPS_KEY]);
|
||||
if (error) return callback(error);
|
||||
|
||||
callback(null, !!enabled); // settingsdb holds string values only
|
||||
});
|
||||
async function getUnstableAppsConfig() {
|
||||
const result = await get(exports.UNSTABLE_APPS_KEY);
|
||||
if (result === null) gDefaults[exports.UNSTABLE_APPS_KEY];
|
||||
return !!result; // db holds string values only
|
||||
}
|
||||
|
||||
function setUnstableAppsConfig(enabled, callback) {
|
||||
async function setUnstableAppsConfig(enabled) {
|
||||
assert.strictEqual(typeof enabled, 'boolean');
|
||||
assert.strictEqual(typeof callback, 'function');
|
||||
|
||||
// settingsdb takes string values only
|
||||
settingsdb.set(exports.UNSTABLE_APPS_KEY, enabled ? 'enabled' : '', function (error) {
|
||||
if (error) return callback(error);
|
||||
|
||||
notifyChange(exports.UNSTABLE_APPS_KEY, enabled);
|
||||
|
||||
return callback(null);
|
||||
});
|
||||
await set(exports.UNSTABLE_APPS_KEY, enabled ? 'enabled' : ''); // db holds string values only
|
||||
notifyChange(exports.UNSTABLE_APPS_KEY, enabled);
|
||||
}
|
||||
|
||||
function getBackupConfig(callback) {
|
||||
@@ -646,30 +635,19 @@ function setSysinfoConfig(sysinfoConfig, callback) {
|
||||
});
|
||||
}
|
||||
|
||||
function getDirectoryConfig(callback) {
|
||||
assert.strictEqual(typeof callback, 'function');
|
||||
|
||||
settingsdb.get(exports.DIRECTORY_CONFIG_KEY, function (error, value) {
|
||||
if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.DIRECTORY_CONFIG_KEY]);
|
||||
if (error) return callback(error);
|
||||
|
||||
callback(null, JSON.parse(value));
|
||||
});
|
||||
async function getDirectoryConfig() {
|
||||
const value = await get(exports.DIRECTORY_CONFIG_KEY);
|
||||
if (value === null) return gDefaults[exports.DIRECTORY_CONFIG_KEY];
|
||||
return JSON.parse(value);
|
||||
}
|
||||
|
||||
function setDirectoryConfig(directoryConfig, callback) {
|
||||
async function setDirectoryConfig(directoryConfig) {
|
||||
assert.strictEqual(typeof directoryConfig, 'object');
|
||||
assert.strictEqual(typeof callback, 'function');
|
||||
|
||||
if (isDemo()) return callback(new BoxError(BoxError.BAD_FIELD, 'Not allowed in demo mode'));
|
||||
if (isDemo()) throw new BoxError(BoxError.BAD_FIELD, 'Not allowed in demo mode');
|
||||
|
||||
settingsdb.set(exports.DIRECTORY_CONFIG_KEY, JSON.stringify(directoryConfig), function (error) {
|
||||
if (error) return callback(error);
|
||||
|
||||
notifyChange(exports.DIRECTORY_CONFIG_KEY, directoryConfig);
|
||||
|
||||
callback(null);
|
||||
});
|
||||
await set(exports.DIRECTORY_CONFIG_KEY, JSON.stringify(directoryConfig));
|
||||
notifyChange(exports.DIRECTORY_CONFIG_KEY, directoryConfig);
|
||||
}
|
||||
|
||||
function getAppstoreListingConfig(callback) {
|
||||
|
||||
Reference in New Issue
Block a user