aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2017-04-13 22:49:12 +0200
committerChristian Schneppe <christian@pix-art.de>2017-04-13 22:49:12 +0200
commitabb8c7eff998c16f50cbe9bf37eb255be8f3058b (patch)
treef90d050db40ab3fdddf34c9f648df8fa6cd26de3 /src/main/java/de/pixart/messenger/services/XmppConnectionService.java
parent6f4061521657d1c31bbf28c3b8b3efc4eb59138f (diff)
use async message loading only when called from UI
Diffstat (limited to 'src/main/java/de/pixart/messenger/services/XmppConnectionService.java')
-rw-r--r--src/main/java/de/pixart/messenger/services/XmppConnectionService.java23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
index f2f8a1ba5..2a0aa62dd 100644
--- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
+++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
@@ -1542,7 +1542,7 @@ public class XmppConnectionService extends Service {
if (conversation != null) {
conversation.setBookmark(bookmark);
} else if (bookmark.autojoin() && bookmark.getJid() != null && autojoin) {
- conversation = findOrCreateConversation(account, bookmark.getJid(), true, true);
+ conversation = findOrCreateConversation(account, bookmark.getJid(), true, true, false);
conversation.setBookmark(bookmark);
}
}
@@ -1809,15 +1809,15 @@ public class XmppConnectionService extends Service {
return null;
}
- public Conversation findOrCreateConversation(Account account, Jid jid, boolean muc) {
- return this.findOrCreateConversation(account, jid, muc, false);
+ public Conversation findOrCreateConversation(Account account, Jid jid, boolean muc, final boolean async) {
+ return this.findOrCreateConversation(account, jid, muc, false, async);
}
- public Conversation findOrCreateConversation(final Account account, final Jid jid, final boolean muc, final boolean joinAfterCreate) {
- return this.findOrCreateConversation(account, jid, muc, joinAfterCreate, null);
+ public Conversation findOrCreateConversation(final Account account, final Jid jid, final boolean muc, final boolean joinAfterCreate, final boolean async) {
+ return this.findOrCreateConversation(account, jid, muc, joinAfterCreate, null, async);
}
- public Conversation findOrCreateConversation(final Account account, final Jid jid, final boolean muc, final boolean joinAfterCreate, final MessageArchiveService.Query query) {
+ public Conversation findOrCreateConversation(final Account account, final Jid jid, final boolean muc, final boolean joinAfterCreate, final MessageArchiveService.Query query, final boolean async) {
synchronized (this.conversations) {
Conversation conversation = find(account, jid);
if (conversation != null) {
@@ -1856,7 +1856,7 @@ public class XmppConnectionService extends Service {
loadMessagesFromDb = false;
}
final Conversation c = conversation;
- mDatabaseExecutor.execute(new Runnable() {
+ final Runnable runnable = new Runnable() {
@Override
public void run() {
if (loadMessagesFromDb) {
@@ -1880,7 +1880,12 @@ public class XmppConnectionService extends Service {
joinMuc(c);
}
}
- });
+ };
+ if (async) {
+ mDatabaseExecutor.execute(runnable);
+ } else {
+ runnable.run();
+ }
this.conversations.add(conversation);
updateConversationUi();
return conversation;
@@ -2637,7 +2642,7 @@ public class XmppConnectionService extends Service {
return false;
}
final Jid jid = Jid.fromParts(new BigInteger(64, getRNG()).toString(Character.MAX_RADIX), server, null);
- final Conversation conversation = findOrCreateConversation(account, jid, true, false);
+ final Conversation conversation = findOrCreateConversation(account, jid, true, false, true);
joinMuc(conversation, new OnConferenceJoined() {
@Override
public void onConferenceJoined(final Conversation conversation) {