merge messages with related status (unsend, send, send_received)

This commit is contained in:
iNPUTmice 2015-03-01 12:05:54 +01:00
parent 4beb954da5
commit d318af098d
1 changed files with 17 additions and 1 deletions

View File

@ -362,7 +362,8 @@ public class Message extends AbstractEntity {
message.getDownloadable() == null &&
message.getEncryption() != Message.ENCRYPTION_PGP &&
this.getType() == message.getType() &&
this.getStatus() == message.getStatus() &&
//this.getStatus() == message.getStatus() &&
isStatusMergeable(this.getStatus(),message.getStatus()) &&
this.getEncryption() == message.getEncryption() &&
this.getCounterpart() != null &&
this.getCounterpart().equals(message.getCounterpart()) &&
@ -374,6 +375,17 @@ public class Message extends AbstractEntity {
);
}
private static boolean isStatusMergeable(int a, int b) {
return a == b || (
( a == Message.STATUS_SEND_RECEIVED && b == Message.STATUS_UNSEND)
|| (a == Message.STATUS_SEND_RECEIVED && b == Message.STATUS_SEND)
|| (a == Message.STATUS_UNSEND && b == Message.STATUS_SEND)
|| (a == Message.STATUS_UNSEND && b == Message.STATUS_SEND_RECEIVED)
|| (a == Message.STATUS_SEND && b == Message.STATUS_UNSEND)
|| (a == Message.STATUS_SEND && b == Message.STATUS_SEND_RECEIVED)
);
}
public String getMergedBody() {
final Message next = this.next();
if (this.mergeable(next)) {
@ -387,6 +399,10 @@ public class Message extends AbstractEntity {
}
public int getMergedStatus() {
final Message next = this.next();
if (this.mergeable(next)) {
return next.getStatus();
}
return getStatus();
}