More filtering of messages results without ACS

+ filterMessageListByReadACS()
* Use filterMessageListByReadACS() in my messages
* Use filterMessageListByReadACS() in message search
This commit is contained in:
Bryan Ashby 2019-09-11 22:03:24 -06:00
parent 36afcc0298
commit afd6d4265f
No known key found for this signature in database
GPG key ID: B49EB437951D2542
3 changed files with 49 additions and 26 deletions

View file

@ -33,6 +33,7 @@ exports.changeMessageConference = changeMessageConference;
exports.changeMessageArea = changeMessageArea;
exports.hasMessageConfAndAreaRead = hasMessageConfAndAreaRead;
exports.filterMessageAreaTagsByReadACS = filterMessageAreaTagsByReadACS;
exports.filterMessageListByReadACS = filterMessageListByReadACS;
exports.tempChangeMessageConfAndArea = tempChangeMessageConfAndArea;
exports.getMessageListForArea = getMessageListForArea;
exports.getNewMessageCountInAreaForUser = getNewMessageCountInAreaForUser;
@ -420,6 +421,29 @@ function filterMessageAreaTagsByReadACS(client, areaTags) {
});
}
function filterMessageListByReadACS(client, messageList) {
//
// Filter out messages belonging to conf/areas the user
// doesn't have access to.
//
// Keep a cache around for quick lookup.
const acsCache = new Map(); // areaTag:boolean
return messageList.filter(msg => {
let cached = acsCache.get(msg.areaTag);
if(false === cached) {
return false;
}
if(true === cached) {
return true;
}
cached = hasMessageConfAndAreaRead(client, msg.areaTag);
acsCache.set(msg.areaTag, cached);
return cached;
});
}
function getNewMessageCountInAreaForUser(userId, areaTag, cb) {
getMessageAreaLastReadId(userId, areaTag, (err, lastMessageId) => {
lastMessageId = lastMessageId || 0;