|
|
@ -1072,36 +1072,38 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
|
|
|
|
@NonNull Optional<Long> smsMessageId)
|
|
|
|
@NonNull Optional<Long> smsMessageId)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SmsDatabase smsDatabase = DatabaseFactory.getSmsDatabase(context);
|
|
|
|
SmsDatabase smsDatabase = DatabaseFactory.getSmsDatabase(context);
|
|
|
|
|
|
|
|
if (SessionMetaProtocol.shouldErrorMessageShow(context, timestamp)) {
|
|
|
|
|
|
|
|
if (!smsMessageId.isPresent()) {
|
|
|
|
|
|
|
|
Optional<InsertResult> insertResult = insertPlaceholder(sender, senderDevice, timestamp);
|
|
|
|
|
|
|
|
|
|
|
|
if (!smsMessageId.isPresent()) {
|
|
|
|
if (insertResult.isPresent()) {
|
|
|
|
Optional<InsertResult> insertResult = insertPlaceholder(sender, senderDevice, timestamp);
|
|
|
|
smsDatabase.markAsDecryptFailed(insertResult.get().getMessageId());
|
|
|
|
|
|
|
|
messageNotifier.updateNotification(context, insertResult.get().getThreadId());
|
|
|
|
if (insertResult.isPresent()) {
|
|
|
|
}
|
|
|
|
smsDatabase.markAsDecryptFailed(insertResult.get().getMessageId());
|
|
|
|
} else {
|
|
|
|
messageNotifier.updateNotification(context, insertResult.get().getThreadId());
|
|
|
|
smsDatabase.markAsDecryptFailed(smsMessageId.get());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
|
|
|
|
smsDatabase.markAsDecryptFailed(smsMessageId.get());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
SessionManagementProtocol.triggerSessionRestorationUI(context, sender);
|
|
|
|
SessionManagementProtocol.triggerSessionRestorationUI(context, sender, timestamp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void handleNoSessionMessage(@NonNull String sender, int senderDevice, long timestamp,
|
|
|
|
private void handleNoSessionMessage(@NonNull String sender, int senderDevice, long timestamp,
|
|
|
|
@NonNull Optional<Long> smsMessageId)
|
|
|
|
@NonNull Optional<Long> smsMessageId)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SmsDatabase smsDatabase = DatabaseFactory.getSmsDatabase(context);
|
|
|
|
SmsDatabase smsDatabase = DatabaseFactory.getSmsDatabase(context);
|
|
|
|
|
|
|
|
if (SessionMetaProtocol.shouldErrorMessageShow(context, timestamp)) {
|
|
|
|
|
|
|
|
if (!smsMessageId.isPresent()) {
|
|
|
|
|
|
|
|
Optional<InsertResult> insertResult = insertPlaceholder(sender, senderDevice, timestamp);
|
|
|
|
|
|
|
|
|
|
|
|
if (!smsMessageId.isPresent()) {
|
|
|
|
if (insertResult.isPresent()) {
|
|
|
|
Optional<InsertResult> insertResult = insertPlaceholder(sender, senderDevice, timestamp);
|
|
|
|
smsDatabase.markAsNoSession(insertResult.get().getMessageId());
|
|
|
|
|
|
|
|
messageNotifier.updateNotification(context, insertResult.get().getThreadId());
|
|
|
|
if (insertResult.isPresent()) {
|
|
|
|
}
|
|
|
|
smsDatabase.markAsNoSession(insertResult.get().getMessageId());
|
|
|
|
} else {
|
|
|
|
messageNotifier.updateNotification(context, insertResult.get().getThreadId());
|
|
|
|
smsDatabase.markAsNoSession(smsMessageId.get());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
|
|
|
|
smsDatabase.markAsNoSession(smsMessageId.get());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
SessionManagementProtocol.triggerSessionRestorationUI(context, sender);
|
|
|
|
SessionManagementProtocol.triggerSessionRestorationUI(context, sender, timestamp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void handleLegacyMessage(@NonNull String sender, int senderDevice, long timestamp,
|
|
|
|
private void handleLegacyMessage(@NonNull String sender, int senderDevice, long timestamp,
|
|
|
|