keep an index of POP3 messages to show

This commit is contained in:
Andris Reinman 2019-03-13 15:39:13 +02:00
parent 01463cf386
commit d7de6fadd4

25
pop3.js
View file

@ -107,11 +107,17 @@ const serverOptions = {
session.user.mailbox = mailbox._id;
db.redis.hget('pop3uid', mailbox._id.toString(), (err, lastIndex) => {
let query = {
mailbox: mailbox._id
};
if (!err && lastIndex && !isNaN(lastIndex)) {
query.uid = { $gte: Number(lastIndex) };
}
db.database
.collection('messages')
.find({
mailbox: mailbox._id
})
.find(query)
.project({
uid: true,
size: true,
@ -127,6 +133,17 @@ const serverOptions = {
return callback(err);
}
let updateUIDIndex = done => {
// first is the newest, last the oldest
let oldestMessageData = messages && messages.length && messages[messages.length - 1];
if (oldestMessageData || !oldestMessageData.uid) {
return done();
}
// try to update index, ignore result
db.redis.hset('pop3uid', mailbox._id.toString(), oldestMessageData.uid, done);
};
updateUIDIndex(() => {
return callback(null, {
messages: messages
// show older first
@ -144,6 +161,8 @@ const serverOptions = {
size: messages.reduce((acc, message) => acc + message.size, 0)
});
});
});
});
}
);
},