do not explicitly request MAM archive for blocked contacts

This commit is contained in:
Daniel Gultsch 2018-01-29 01:39:46 +01:00
parent e48788e821
commit 2f1f9f2c2c
2 changed files with 44 additions and 44 deletions

View file

@ -1641,9 +1641,7 @@ public class XmppConnectionService extends Service {
return;
}
Log.d(Config.LOGTAG, "load more messages for " + conversation.getName() + " prior to " + MessageGenerator.getTimestamp(timestamp));
Runnable runnable = new Runnable() {
@Override
public void run() {
final Runnable runnable = () -> {
final Account account = conversation.getAccount();
List<Message> messages = databaseBackend.getMessages(conversation, 50, timestamp);
if (messages.size() > 0) {
@ -1653,8 +1651,13 @@ public class XmppConnectionService extends Service {
} else if (conversation.hasMessagesLeftOnServer()
&& account.isOnlineAndConnected()
&& conversation.getLastClearHistory().getTimestamp() == 0) {
if ((conversation.getMode() == Conversation.MODE_SINGLE && account.getXmppConnection().getFeatures().mam())
|| (conversation.getMode() == Conversation.MODE_MULTI && conversation.getMucOptions().mamSupport())) {
final boolean mamAvailable;
if (conversation.getMode() == Conversation.MODE_SINGLE) {
mamAvailable = account.getXmppConnection().getFeatures().mam() && !conversation.getContact().isBlocked();
} else {
mamAvailable = conversation.getMucOptions().mamSupport();
}
if (mamAvailable) {
MessageArchiveService.Query query = getMessageArchiveService().query(conversation, new MamReference(0), timestamp, false);
if (query != null) {
query.setCallback(callback);
@ -1665,7 +1668,6 @@ public class XmppConnectionService extends Service {
}
}
}
};
mDatabaseReaderExecutor.execute(runnable);
}
@ -1754,15 +1756,14 @@ public class XmppConnectionService extends Service {
loadMessagesFromDb = false;
}
final Conversation c = conversation;
final Runnable runnable = new Runnable() {
@Override
public void run() {
final Runnable runnable = () -> {
if (loadMessagesFromDb) {
c.addAll(0, databaseBackend.getMessages(c, Config.PAGE_SIZE));
updateConversationUi();
c.messagesLoaded.set(true);
}
if (account.getXmppConnection() != null
&& !c.getContact().isBlocked()
&& account.getXmppConnection().getFeatures().mam()
&& !muc) {
if (query == null) {
@ -1777,7 +1778,6 @@ public class XmppConnectionService extends Service {
if (joinAfterCreate) {
joinMuc(c);
}
}
};
if (async) {
mDatabaseReaderExecutor.execute(runnable);

View file

@ -1453,7 +1453,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
}
private boolean showLoadMoreMessages(final Conversation c) {
final boolean mam = hasMamSupport(c);
final boolean mam = hasMamSupport(c) && !c.getContact().isBlocked();
final MessageArchiveService service = activity.xmppConnectionService.getMessageArchiveService();
return mam && (c.getLastClearHistory().getTimestamp() != 0 || (c.countMessages() == 0 && c.messagesLoaded.get() && c.hasMessagesLeftOnServer() && !service.queryInProgress(c)));
}