mirror of
https://github.com/NuSkooler/enigma-bbs.git
synced 2025-07-28 05:26:10 +02:00
More filtering of messages results without ACS
+ filterMessageListByReadACS() * Use filterMessageListByReadACS() in my messages * Use filterMessageListByReadACS() in message search
This commit is contained in:
parent
36afcc0298
commit
afd6d4265f
3 changed files with 49 additions and 26 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue