Fixed link preview messages not being deleted in group chats.

This commit is contained in:
Mikunj 2019-09-10 13:43:56 +10:00
parent f209784648
commit 9d8de789d7

View File

@ -780,6 +780,10 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
} }
private void handleMediaMessage(@NonNull SignalServiceContent content, @NonNull IncomingMediaMessage mediaMessage, @NonNull Optional<Long> smsMessageID) throws StorageFailedException { private void handleMediaMessage(@NonNull SignalServiceContent content, @NonNull IncomingMediaMessage mediaMessage, @NonNull Optional<Long> smsMessageID) throws StorageFailedException {
handleMediaMessage(content, mediaMessage, smsMessageID, null);
}
private void handleMediaMessage(@NonNull SignalServiceContent content, @NonNull IncomingMediaMessage mediaMessage, @NonNull Optional<Long> smsMessageID, @Nullable Optional<Long> messageServerIDOrNull) throws StorageFailedException {
MmsDatabase database = DatabaseFactory.getMmsDatabase(context); MmsDatabase database = DatabaseFactory.getMmsDatabase(context);
database.beginTransaction(); database.beginTransaction();
@ -811,6 +815,9 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
database.endTransaction(); database.endTransaction();
} }
// Loki - Map message id to server id
updatePublicChatMessageWithServerID(messageServerIDOrNull, insertResult);
if (insertResult.isPresent()) { if (insertResult.isPresent()) {
MessageNotifier.updateNotification(context, insertResult.get().getThreadId()); MessageNotifier.updateNotification(context, insertResult.get().getThreadId());
} }
@ -963,7 +970,7 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
if (lp.isPresent()) { mediaMessage.getLinkPreviews().add(lp.get()); } if (lp.isPresent()) { mediaMessage.getLinkPreviews().add(lp.get()); }
if (c == urlCount) { if (c == urlCount) {
try { try {
handleMediaMessage(content, mediaMessage, smsMessageId); handleMediaMessage(content, mediaMessage, smsMessageId, messageServerIDOrNull);
} catch (Exception e) { } catch (Exception e) {
// TODO: Handle // TODO: Handle
} }
@ -978,11 +985,8 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
if (smsMessageId.isPresent()) database.deleteMessage(smsMessageId.get()); if (smsMessageId.isPresent()) database.deleteMessage(smsMessageId.get());
if (insertResult.isPresent() && messageServerIDOrNull.isPresent()) { // Loki - Map message id to server id
long messageID = insertResult.get().getMessageId(); updatePublicChatMessageWithServerID(messageServerIDOrNull, insertResult);
long messageServerID = messageServerIDOrNull.get();
DatabaseFactory.getLokiMessageDatabase(context).setServerID(messageID, messageServerID);
}
if (threadId != null) { if (threadId != null) {
MessageNotifier.updateNotification(context, threadId); MessageNotifier.updateNotification(context, threadId);
@ -991,6 +995,15 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
} }
} }
private void updatePublicChatMessageWithServerID(@Nullable Optional<Long> messageServerIDOrNull, Optional<InsertResult> databaseInsert) {
if (messageServerIDOrNull == null) { return; }
if (databaseInsert.isPresent() && messageServerIDOrNull.isPresent()) {
long messageID = databaseInsert.get().getMessageId();
long messageServerID = messageServerIDOrNull.get();
DatabaseFactory.getLokiMessageDatabase(context).setServerID(messageID, messageServerID);
}
}
private void acceptFriendRequestIfNeeded(@NonNull SignalServiceEnvelope envelope, @NonNull SignalServiceContent content) { private void acceptFriendRequestIfNeeded(@NonNull SignalServiceEnvelope envelope, @NonNull SignalServiceContent content) {
// If we get anything other than a friend request, we can assume that we have a session with the other user // If we get anything other than a friend request, we can assume that we have a session with the other user
if (envelope.isFriendRequest()) { return; } if (envelope.isFriendRequest()) { return; }