diff options
Diffstat (limited to 'src/main/java/de/pixart/messenger/entities/Message.java')
-rw-r--r-- | src/main/java/de/pixart/messenger/entities/Message.java | 56 |
1 files changed, 44 insertions, 12 deletions
diff --git a/src/main/java/de/pixart/messenger/entities/Message.java b/src/main/java/de/pixart/messenger/entities/Message.java index a5f81ff5b..61ed8af6d 100644 --- a/src/main/java/de/pixart/messenger/entities/Message.java +++ b/src/main/java/de/pixart/messenger/entities/Message.java @@ -58,6 +58,7 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable public static final int TYPE_FILE = 2; public static final int TYPE_STATUS = 3; public static final int TYPE_PRIVATE = 4; + public static final int TYPE_PRIVATE_FILE = 5; public static final String CONVERSATION = "conversationUuid"; public static final String COUNTERPART = "counterpart"; @@ -153,12 +154,12 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable } protected Message(final Conversational conversation, final String uuid, final String conversationUUid, final Jid counterpart, - final Jid trueCounterpart, final String body, final long timeSent, - final int encryption, final int status, final int type, final boolean carbon, - final String remoteMsgId, final String relativeFilePath, - final String serverMsgId, final String fingerprint, final boolean read, final boolean deleted, - final String edited, final boolean oob, final String errorMessage, final Set<ReadByMarker> readByMarkers, - final boolean markable, final boolean file_deleted) { + final Jid trueCounterpart, final String body, final long timeSent, + final int encryption, final int status, final int type, final boolean carbon, + final String remoteMsgId, final String relativeFilePath, + final String serverMsgId, final String fingerprint, final boolean read, final boolean deleted, + final String edited, final boolean oob, final String errorMessage, final Set<ReadByMarker> readByMarkers, + final boolean markable, final boolean file_deleted) { this.conversation = conversation; this.uuid = uuid; this.conversationUuid = conversationUUid; @@ -264,7 +265,7 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable } else { values.put(TRUE_COUNTERPART, trueCounterpart.toString()); } - values.put(BODY, body.length() > Config.MAX_STORAGE_MESSAGE_CHARS ? body.substring(0,Config.MAX_STORAGE_MESSAGE_CHARS) : body); + values.put(BODY, body.length() > Config.MAX_STORAGE_MESSAGE_CHARS ? body.substring(0, Config.MAX_STORAGE_MESSAGE_CHARS) : body); values.put(TIME_SENT, timeSent); values.put(ENCRYPTION, encryption); values.put(STATUS, status); @@ -504,8 +505,8 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable return Collections.unmodifiableSet(this.readByMarkers); } - public boolean similar(Message message) { - if (type != TYPE_PRIVATE && this.serverMsgId != null && message.getServerMsgId() != null) { + boolean similar(Message message) { + if (!isPrivateMessage() && this.serverMsgId != null && message.getServerMsgId() != null) { return this.serverMsgId.equals(message.getServerMsgId()); } else if (this.body == null || this.counterpart == null) { return false; @@ -526,7 +527,7 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable } return (message.getRemoteMsgId().equals(this.remoteMsgId) || message.getRemoteMsgId().equals(this.uuid)) && matchingCounterpart - && (body.equals(otherBody) ||(message.getEncryption() == Message.ENCRYPTION_PGP && hasUuid)); + && (body.equals(otherBody) || (message.getEncryption() == Message.ENCRYPTION_PGP && hasUuid)); } else { return this.remoteMsgId == null && matchingCounterpart @@ -605,7 +606,7 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable this.edited() == message.edited() && (message.getTimeSent() - this.getTimeSent()) <= (Config.MESSAGE_MERGE_WINDOW * 1000) && this.getBody().length() + message.getBody().length() <= Config.MAX_DISPLAY_MESSAGE_CHARS && - !message.isGeoUri()&& + !message.isGeoUri() && !this.isGeoUri() && !message.isWebUri() && !this.isWebUri() && @@ -876,8 +877,12 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable this.mPreviousMessage = null; } + public boolean isPrivateMessage() { + return type == TYPE_PRIVATE || type == TYPE_PRIVATE_FILE; + } + public boolean isFileOrImage() { - return type == TYPE_FILE || type == TYPE_IMAGE; + return type == TYPE_FILE || type == TYPE_IMAGE || type == TYPE_PRIVATE_FILE; } public boolean hasFileOnRemoteHost() { @@ -955,4 +960,31 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable } return encryption; } + + public static boolean configurePrivateMessage(final Message message) { + return configurePrivateMessage(message, false); + } + + public static boolean configurePrivateFileMessage(final Message message) { + return configurePrivateMessage(message, true); + } + + private static boolean configurePrivateMessage(final Message message, final boolean isFile) { + final Conversation conversation; + if (message.conversation instanceof Conversation) { + conversation = (Conversation) message.conversation; + } else { + return false; + } + if (conversation.getMode() == Conversation.MODE_MULTI) { + final Jid nextCounterpart = conversation.getNextCounterpart(); + if (nextCounterpart != null) { + message.setCounterpart(nextCounterpart); + message.setTrueCounterpart(conversation.getMucOptions().getTrueCounterpart(nextCounterpart)); + message.setType(isFile ? Message.TYPE_PRIVATE_FILE : Message.TYPE_PRIVATE); + return true; + } + } + return false; + } }
\ No newline at end of file |