optimize notifications.getMultiple

v1.18.x
barisusakli 8 years ago
parent 0452e9cfa4
commit 877820779c

@ -37,50 +37,41 @@ var utils = require('../public/src/utils');
return callback(err); return callback(err);
} }
if (!Array.isArray(notifications) || !notifications.length) { notifications = notifications.filter(Boolean);
if (!notifications.length) {
return callback(null, []); return callback(null, []);
} }
async.map(notifications, function(notification, next) { var userKeys = notifications.map(function(notification) {
if (!notification) { return notification.from;
return next(null, null); });
}
notification.datetimeISO = utils.toISOString(notification.datetime);
if (notification.bodyLong) { User.getUsersFields(userKeys, ['username', 'userslug', 'picture'], function(err, usersData) {
notification.bodyLong = S(notification.bodyLong).escapeHTML().s; if (err) {
return callback(err);
} }
notifications.forEach(function(notification, index) {
notification.datetimeISO = utils.toISOString(notification.datetime);
if (notification.from && !notification.image) { if (notification.bodyLong) {
User.getUserFields(notification.from, ['username', 'userslug', 'picture'], function(err, userData) { notification.bodyLong = S(notification.bodyLong).escapeHTML().s;
if (err) { }
return next(err);
}
notification.image = userData.picture || null;
notification.user = userData;
if (userData.username === '[[global:guest]]') { notification.user = usersData[index];
if (notification.user) {
notification.image = notification.user.picture || null;
if (notification.user.username === '[[global:guest]]') {
notification.bodyShort = notification.bodyShort.replace(/([\s\S]*?),[\s\S]*?,([\s\S]*?)/, '$1, [[global:guest]], $2'); notification.bodyShort = notification.bodyShort.replace(/([\s\S]*?),[\s\S]*?,([\s\S]*?)/, '$1, [[global:guest]], $2');
} }
next(null, notification);
});
return;
} else if (notification.image) {
switch(notification.image) {
case 'brand:logo':
notification.image = meta.config['brand:logo'] || nconf.get('relative_path') + '/logo.png';
break;
} }
return next(null, notification); if (notification.image === 'brand:logo' || !notification.image) {
} else { notification.image = meta.config['brand:logo'] || nconf.get('relative_path') + '/logo.png';
notification.image = meta.config['brand:logo'] || nconf.get('relative_path') + '/logo.png'; }
return next(null, notification); });
}
}, callback); callback(null, notifications);
});
}); });
}; };

Loading…
Cancel
Save