mailer: fix error handling

previous mailer code has no callback and thus no way to pass back errors.
now with asyncification it passes back the error
This commit is contained in:
Girish Ramakrishnan
2021-08-19 12:32:23 -07:00
parent ada7166bf8
commit 4cd5137292
10 changed files with 176 additions and 244 deletions

View File

@@ -310,34 +310,23 @@ function getTimeZone(callback) {
});
}
function getCloudronName(callback) {
assert.strictEqual(typeof callback, 'function');
settingsdb.get(exports.CLOUDRON_NAME_KEY, function (error, name) {
if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.CLOUDRON_NAME_KEY]);
if (error) return callback(error);
callback(null, name);
});
async function getCloudronName() {
const name = await get(exports.CLOUDRON_NAME_KEY);
if (name === null) return gDefaults[exports.CLOUDRON_NAME_KEY];
return name;
}
function setCloudronName(name, callback) {
async function setCloudronName(name) {
assert.strictEqual(typeof name, 'string');
assert.strictEqual(typeof callback, 'function');
if (!name) return callback(new BoxError(BoxError.BAD_FIELD, 'name is empty', { field: 'name' }));
if (!name) throw new BoxError(BoxError.BAD_FIELD, 'name is empty', { field: 'name' });
// some arbitrary restrictions (for sake of ui layout)
// if this is changed, adjust dashboard/branding.html
if (name.length > 64) return callback(new BoxError(BoxError.BAD_FIELD, 'name cannot exceed 64 characters', { field: 'name' }));
if (name.length > 64) throw new BoxError(BoxError.BAD_FIELD, 'name cannot exceed 64 characters', { field: 'name' });
settingsdb.set(exports.CLOUDRON_NAME_KEY, name, function (error) {
if (error) return callback(error);
notifyChange(exports.CLOUDRON_NAME_KEY, name);
return callback(null);
});
await set(exports.CLOUDRON_NAME_KEY, name);
notifyChange(exports.CLOUDRON_NAME_KEY, name);
}
async function getCloudronAvatar() {
@@ -831,28 +820,17 @@ function setApiServerOrigin(origin, callback) {
});
}
function getFooter(callback) {
assert.strictEqual(typeof callback, 'function');
settingsdb.get(exports.FOOTER_KEY, function (error, value) {
if (error && error.reason === BoxError.NOT_FOUND) return callback(null, gDefaults[exports.FOOTER_KEY]);
if (error) return callback(error);
callback(null, value);
});
async function getFooter() {
const value = await get(exports.FOOTER_KEY);
if (value === null) return gDefaults[exports.FOOTER_KEY];
return value;
}
function setFooter(footer, callback) {
async function setFooter(footer) {
assert.strictEqual(typeof footer, 'string');
assert.strictEqual(typeof callback, 'function');
settingsdb.set(exports.FOOTER_KEY, footer, function (error) {
if (error) return callback(error);
notifyChange(exports.FOOTER_KEY, footer);
callback(null);
});
await set(exports.FOOTER_KEY, footer);
notifyChange(exports.FOOTER_KEY, footer);
}
function provider() { return gCache.provider; }