reset unsend messages to waiting

This commit is contained in:
iNPUTmice 2014-08-27 19:25:58 +02:00
parent 9075d3854d
commit 4435b0055e
2 changed files with 17 additions and 2 deletions

View file

@ -169,11 +169,11 @@ public class XmppConnectionService extends Service {
syncDirtyContacts(account);
scheduleWakeupCall(PING_MAX_INTERVAL, true);
} else if (account.getStatus() == Account.STATUS_OFFLINE) {
resetSendingToWaiting(account);
if (!account.isOptionSet(Account.OPTION_DISABLED)) {
int timeToReconnect = mRandom.nextInt(50) + 10;
scheduleWakeupCall(timeToReconnect, false);
}
} else if (account.getStatus() == Account.STATUS_REGISTRATION_SUCCESSFULL) {
databaseBackend.updateAccount(account);
reconnectAccount(account, true);
@ -232,7 +232,8 @@ public class XmppConnectionService extends Service {
for (Conversation conversation : getConversations()) {
if (conversation.getAccount() == account) {
for (Message message : conversation.getMessages()) {
if (message.getStatus() == Message.STATUS_UNSEND
if ((message.getStatus() == Message.STATUS_UNSEND || message
.getStatus() == Message.STATUS_WAITING)
&& message.getUuid().equals(uuid)) {
markMessage(message, Message.STATUS_SEND);
return;
@ -1392,6 +1393,18 @@ public class XmppConnectionService extends Service {
sendMessagePacket(conversation.getAccount(), packet);
}
public void resetSendingToWaiting(Account account) {
for(Conversation conversation : getConversations()) {
if (conversation.getAccount() == account) {
for(Message message : conversation.getMessages()) {
if (message.getStatus() == Message.STATUS_UNSEND) {
markMessage(message, Message.STATUS_WAITING);
}
}
}
}
}
public boolean markMessage(Account account, String recipient, String uuid,
int status) {
for (Conversation conversation : getConversations()) {

View file

@ -635,11 +635,13 @@ public class XmppConnection implements Runnable {
EnablePacket enable = new EnablePacket(smVersion);
tagWriter.writeStanzaAsync(enable);
stanzasSent = 0;
messageReceipts.clear();
} else if (streamFeatures.hasChild("sm", "urn:xmpp:sm:2")) {
smVersion = 2;
EnablePacket enable = new EnablePacket(smVersion);
tagWriter.writeStanzaAsync(enable);
stanzasSent = 0;
messageReceipts.clear();
}
sendServiceDiscoveryInfo(account.getServer());
sendServiceDiscoveryItems(account.getServer());