Handle case where GIF fetch fails

This commit is contained in:
Niels Andriesse 2019-09-17 10:36:34 +10:00
parent e5d82b325d
commit df36d5e539

View File

@ -946,14 +946,14 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
} else { } else {
notifyTypingStoppedFromIncomingMessage(recipient, content.getSender(), content.getSenderDevice()); notifyTypingStoppedFromIncomingMessage(recipient, content.getSender(), content.getSenderDevice());
IncomingTextMessage textMessage = new IncomingTextMessage(Address.fromSerialized(content.getSender()), IncomingTextMessage _textMessage = new IncomingTextMessage(Address.fromSerialized(content.getSender()),
content.getSenderDevice(), content.getSenderDevice(),
message.getTimestamp(), body, message.getTimestamp(), body,
message.getGroupInfo(), message.getGroupInfo(),
message.getExpiresInSeconds() * 1000L, message.getExpiresInSeconds() * 1000L,
content.isNeedsReceipt()); content.isNeedsReceipt());
textMessage = new IncomingEncryptedMessage(textMessage, body); IncomingEncryptedMessage textMessage = new IncomingEncryptedMessage(_textMessage, body);
List<Link> urls = LinkPreviewUtil.findWhitelistedUrls(body); List<Link> urls = LinkPreviewUtil.findWhitelistedUrls(body);
int urlCount = urls.size(); int urlCount = urls.size();
@ -992,28 +992,34 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
// TODO: Handle // TODO: Handle
} }
} else { } else {
// TODO: Handle handleTextMessage(message, textMessage, smsMessageId, messageServerIDOrNull);
} }
})); }));
} else { } else {
Optional<InsertResult> insertResult = database.insertMessageInbox(textMessage); handleTextMessage(message, textMessage, smsMessageId, messageServerIDOrNull);
if (insertResult.isPresent()) threadId = insertResult.get().getThreadId();
else threadId = null;
if (smsMessageId.isPresent()) database.deleteMessage(smsMessageId.get());
// Loki - Store message server ID
updateGroupChatMessageServerID(messageServerIDOrNull, insertResult);
boolean isGroupMessage = message.getGroupInfo().isPresent();
if (threadId != null && !isGroupMessage) {
MessageNotifier.updateNotification(context, threadId);
}
} }
} }
} }
private void handleTextMessage(@NonNull SignalServiceDataMessage message, @NonNull IncomingTextMessage textMessage, @NonNull Optional<Long> smsMessageId, @NonNull Optional<Long> messageServerIDOrNull) {
SmsDatabase database = DatabaseFactory.getSmsDatabase(context);
Optional<InsertResult> insertResult = database.insertMessageInbox(textMessage);
Long threadId;
if (insertResult.isPresent()) threadId = insertResult.get().getThreadId();
else threadId = null;
if (smsMessageId.isPresent()) database.deleteMessage(smsMessageId.get());
// Loki - Store message server ID
updateGroupChatMessageServerID(messageServerIDOrNull, insertResult);
boolean isGroupMessage = message.getGroupInfo().isPresent();
if (threadId != null && !isGroupMessage) {
MessageNotifier.updateNotification(context, threadId);
}
}
private void updateGroupChatMessageServerID(Optional<Long> messageServerIDOrNull, Optional<InsertResult> insertResult) { private void updateGroupChatMessageServerID(Optional<Long> messageServerIDOrNull, Optional<InsertResult> insertResult) {
if (insertResult.isPresent() && messageServerIDOrNull.isPresent()) { if (insertResult.isPresent() && messageServerIDOrNull.isPresent()) {
long messageID = insertResult.get().getMessageId(); long messageID = insertResult.get().getMessageId();