Virtualize Messages List - only render what's visible

This commit is contained in:
Scott Nonnenberg 2019-05-31 15:42:01 -07:00
parent a976cfe6b6
commit 5ebd8bc690
73 changed files with 4717 additions and 2745 deletions

View file

@ -121,9 +121,11 @@ module.exports = {
getExpiredMessages,
getOutgoingWithoutExpiresAt,
getNextExpiringMessage,
getMessagesByConversation,
getNextTapToViewMessageToAgeOut,
getTapToViewMessagesNeedingErase,
getOlderMessagesByConversation,
getNewerMessagesByConversation,
getMessageMetricsForConversation,
getUnprocessedCount,
getAllUnprocessed,
@ -779,17 +781,40 @@ async function getUnreadByConversation(conversationId, { MessageCollection }) {
return new MessageCollection(messages);
}
async function getMessagesByConversation(
async function getOlderMessagesByConversation(
conversationId,
{ limit = 100, receivedAt = Number.MAX_VALUE, MessageCollection }
) {
const messages = await channels.getMessagesByConversation(conversationId, {
limit,
receivedAt,
});
const messages = await channels.getOlderMessagesByConversation(
conversationId,
{
limit,
receivedAt,
}
);
return new MessageCollection(messages);
}
async function getNewerMessagesByConversation(
conversationId,
{ limit = 100, receivedAt = 0, MessageCollection }
) {
const messages = await channels.getNewerMessagesByConversation(
conversationId,
{
limit,
receivedAt,
}
);
return new MessageCollection(messages);
}
async function getMessageMetricsForConversation(conversationId) {
const result = await channels.getMessageMetricsForConversation(
conversationId
);
return result;
}
async function removeAllMessagesInConversation(
conversationId,
@ -800,7 +825,7 @@ async function removeAllMessagesInConversation(
// Yes, we really want the await in the loop. We're deleting 100 at a
// time so we don't use too much memory.
// eslint-disable-next-line no-await-in-loop
messages = await getMessagesByConversation(conversationId, {
messages = await getOlderMessagesByConversation(conversationId, {
limit: 100,
MessageCollection,
});