aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/thedevstack/conversationsplus/services/XmppConnectionService.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/thedevstack/conversationsplus/services/XmppConnectionService.java')
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/services/XmppConnectionService.java58
1 files changed, 25 insertions, 33 deletions
diff --git a/src/main/java/de/thedevstack/conversationsplus/services/XmppConnectionService.java b/src/main/java/de/thedevstack/conversationsplus/services/XmppConnectionService.java
index bad0415f..2285a29d 100644
--- a/src/main/java/de/thedevstack/conversationsplus/services/XmppConnectionService.java
+++ b/src/main/java/de/thedevstack/conversationsplus/services/XmppConnectionService.java
@@ -55,6 +55,8 @@ import java.util.concurrent.CopyOnWriteArrayList;
import de.thedevstack.android.logcat.Logging;
import de.thedevstack.conversationsplus.ConversationsPlusApplication;
import de.thedevstack.conversationsplus.ConversationsPlusPreferences;
+import de.thedevstack.conversationsplus.enums.MessageDirection;
+import de.thedevstack.conversationsplus.enums.MessageStatus;
import de.thedevstack.conversationsplus.services.avatar.AvatarCache;
import de.thedevstack.conversationsplus.services.avatar.AvatarService;
import de.thedevstack.conversationsplus.services.filetransfer.FileTransferManager;
@@ -71,6 +73,7 @@ import de.thedevstack.conversationsplus.utils.XmppConnectionServiceAccessor;
import de.thedevstack.conversationsplus.utils.XmppSendUtil;
import de.thedevstack.conversationsplus.services.muc.listener.ConferenceServiceDiscoveryReceived;
import de.thedevstack.conversationsplus.xmpp.XepRegistry;
+import de.thedevstack.conversationsplus.xmpp.chatmarkers.ChatMarkersXep;
import de.thedevstack.conversationsplus.xmpp.disco.ServiceDiscoveryIqPacketGenerator;
import de.thedevstack.conversationsplus.xmpp.disco.ServiceDiscoveryIqPacketParser;
import de.thedevstack.conversationsplus.xmpp.disco.ServiceDiscoveryXep;
@@ -97,8 +100,6 @@ import de.thedevstack.conversationsplus.entities.MucOptions.OnRenameListener;
import de.thedevstack.conversationsplus.entities.Presence;
import de.thedevstack.conversationsplus.entities.Roster;
import de.thedevstack.conversationsplus.entities.ServiceDiscoveryResult;
-import de.thedevstack.conversationsplus.entities.Transferable;
-import de.thedevstack.conversationsplus.entities.TransferablePlaceholder;
import de.thedevstack.conversationsplus.generator.IqGenerator;
import de.thedevstack.conversationsplus.generator.MessageGenerator;
import de.thedevstack.conversationsplus.generator.PresenceGenerator;
@@ -224,7 +225,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
if (conversation.getAccount() == account) {
Message message = conversation.findUnsentMessageWithUuid(uuid);
if (message != null) {
- MessageUtil.markMessage(message, Message.STATUS_SEND);
+ MessageUtil.setAndSaveMessageStatus(message, MessageStatus.TRANSMITTED);
}
}
}
@@ -717,6 +718,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
XepRegistry.add(new ServiceDiscoveryXep());
XepRegistry.add(new PingXep());
XepRegistry.add(new OpenPgpXep());
+ XepRegistry.add(new ChatMarkersXep(Settings.CONFIRM_MESSAGE_RECEIVED));
final XmppConnection connection = new XmppConnection(account, this);
connection.setOnMessagePacketReceivedListener(this.mMessageParser);
@@ -752,10 +754,9 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
account.deactivateGracePeriod();
MessagePacket packet = null;
final boolean addToConversation = (conversation.getMode() != Conversation.MODE_MULTI
- || account.getServerIdentity() != XmppConnection.Identity.SLACK)
- && !message.edited();
+ || account.getServerIdentity() != XmppConnection.Identity.SLACK);
boolean saveInDb = addToConversation;
- message.setStatus(Message.STATUS_WAITING);
+ MessageUtil.setMessageStatus(message, MessageStatus.WAITING);
if (!resend && message.getEncryption() != Message.ENCRYPTION_OTR) {
message.getConversation().endOtrIfNeeded();
@@ -763,7 +764,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
new Conversation.OnMessageFound() {
@Override
public void onMessageFound(Message message) {
- MessageUtil.markMessage(message, Message.STATUS_SEND_FAILED);
+ MessageUtil.setAndSaveMessageStatus(message, MessageStatus.FAILED);
}
});
}
@@ -833,9 +834,9 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
}
if (packet != null) {
if (account.getXmppConnection().getFeatures().sm() || conversation.getMode() == Conversation.MODE_MULTI) {
- message.setStatus(Message.STATUS_UNSEND);
+ MessageUtil.setMessageStatus(message, MessageStatus.TRANSMITTING);
} else {
- message.setStatus(Message.STATUS_SEND);
+ MessageUtil.setMessageStatus(message, MessageStatus.TRANSMITTED);
}
}
} else {
@@ -867,9 +868,9 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
if (resend) {
if (packet != null && addToConversation) {
if (account.getXmppConnection().getFeatures().sm() || conversation.getMode() == Conversation.MODE_MULTI) {
- MessageUtil.markMessage(message, Message.STATUS_UNSEND);
+ MessageUtil.setAndSaveMessageStatus(message, MessageStatus.TRANSMITTING);
} else {
- MessageUtil.markMessage(message, Message.STATUS_SEND);
+ MessageUtil.setAndSaveMessageStatus(message, MessageStatus.TRANSMITTED);
}
}
} else {
@@ -879,8 +880,6 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
if (message.getEncryption() == Message.ENCRYPTION_NONE || !ConversationsPlusPreferences.dontSaveEncrypted()) {
if (saveInDb) {
databaseBackend.createMessage(message);
- } else if (message.edited()) {
- databaseBackend.updateMessage(message, message.getEditedId());
}
}
updateConversationUi();
@@ -1085,11 +1084,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
@Override
public void onMessageFound(Message message) {
if (!FileBackend.isFileAvailable(message)) {
- message.setTransferable(new TransferablePlaceholder(Transferable.STATUS_DELETED));
- final int s = message.getStatus();
- if (s == Message.STATUS_WAITING || s == Message.STATUS_OFFERED || s == Message.STATUS_UNSEND) {
- MessageUtil.markMessage(message, Message.STATUS_SEND_FAILED);
- }
+ MessageUtil.setAndSaveStatusForFileDeleted(message);
}
}
});
@@ -2017,8 +2012,8 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
MessagePacket outPacket = mMessageGenerator.generateOtrChat(message);
if (outPacket != null) {
mMessageGenerator.addDelay(outPacket, message.getTimeSent());
- message.setStatus(Message.STATUS_SEND);
- databaseBackend.updateMessage(message);
+ MessageUtil.setMessageStatus(message, MessageStatus.TRANSMITTED);
+ DatabaseBackend.getInstance().updateMessage(message);
sendMessagePacket(account, outPacket);
}
}
@@ -2140,28 +2135,24 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
public void resetSendingToWaiting(Account account) {
for (Conversation conversation : getConversations()) {
if (conversation.getAccount() == account) {
- conversation.findUnsentTextMessages(new Conversation.OnMessageFound() {
+ conversation.findOugoingTextMessagesInTransmission(new Conversation.OnMessageFound() {
@Override
public void onMessageFound(Message message) {
- MessageUtil.markMessage(message, Message.STATUS_WAITING);
+ MessageUtil.setAndSaveMessageStatus(message, MessageStatus.WAITING);
}
});
}
}
}
- public Message markMessage(final Account account, final Jid recipient, final String uuid, final int status) {
+ public Message getMessage(final Account account, final Jid recipient, final String uuid) {
if (uuid == null) {
return null;
}
for (Conversation conversation : getConversations()) {
if (conversation.getJid().toBareJid().equals(recipient) && conversation.getAccount() == account) {
- final Message message = conversation.findSentMessageWithUuidOrRemoteId(uuid);
- if (message != null) {
- MessageUtil.markMessage(message, status);
- }
- return message;
+ return conversation.findSentMessageWithUuidOrRemoteId(uuid);
}
}
return null;
@@ -2258,7 +2249,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
@Override
public void run() {
for (Message message : readMessages) {
- databaseBackend.updateMessage(message);
+ DatabaseBackend.getInstance().updateMessage(message);
}
}
};
@@ -2414,11 +2405,12 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
return this.mNotificationService;
}
- public void resendFailedMessages(final Message message) {
- if (message.getStatus() == Message.STATUS_SEND_FAILED
- || message.getStatus() == Message.STATUS_SEND_CANCELED) {
+ public void resendFailedOrCanceledMessages(final Message message) {
+ if (MessageUtil.isOutgoingMessage(message)
+ && (MessageStatus.FAILED == message.getMessageStatus()
+ || MessageStatus.CANCELED == message.getMessageStatus())) {
message.setTime(System.currentTimeMillis());
- MessageUtil.markMessage(message, Message.STATUS_WAITING);
+ MessageUtil.setAndSaveMessageStatus(message, MessageStatus.WAITING);
this.resendMessage(message, false);
}
}