Store message count, unread count and timestamp of latest message

in group metadata to be able to speed up group listings.

Closes #584, #586, #585
This commit is contained in:
Torsten Grote
2016-10-04 13:37:29 -03:00
parent 3fa84ec7a8
commit a727a0817e
25 changed files with 421 additions and 141 deletions

View File

@@ -499,7 +499,7 @@ public class ConversationActivity extends BriarActivity
for (MessageId m : unread)
// not really clean, but the messaging manager can
// handle introduction messages as well
messagingManager.setReadFlag(m, true);
messagingManager.setReadFlag(groupId, m, true);
long duration = System.currentTimeMillis() - now;
if (LOG.isLoggable(INFO))
LOG.info("Marking read took " + duration + " ms");
@@ -614,7 +614,7 @@ public class ConversationActivity extends BriarActivity
@Override
public void run() {
try {
messagingManager.setReadFlag(m, true);
messagingManager.setReadFlag(groupId, m, true);
loadMessages();
} catch (DbException e) {
if (LOG.isLoggable(WARNING))

View File

@@ -291,13 +291,15 @@ public class ForumControllerImpl extends DbControllerImpl
@Override
public void entriesRead(final Collection<ForumEntry> forumEntries) {
if (forum == null) return;
runOnDbThread(new Runnable() {
@Override
public void run() {
try {
long now = System.currentTimeMillis();
for (ForumEntry fe : forumEntries) {
forumManager.setReadFlag(fe.getId(), true);
forumManager
.setReadFlag(forum.getId(), fe.getId(), true);
}
long duration = System.currentTimeMillis() - now;
if (LOG.isLoggable(INFO))