@ -1073,16 +1073,17 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
@NonNull Optional < Long > smsMessageId , @NonNull Throwable e )
{
SmsDatabase smsDatabase = DatabaseFactory . getSmsDatabase ( context ) ;
if ( SessionMetaProtocol . shouldErrorMessageShow ( context , timestamp ) ) {
if ( ! smsMessageId . isPresent ( ) ) {
Optional < InsertResult > insertResult = insertPlaceholder ( sender , senderDevice , timestamp ) ;
if ( ! smsMessageId . isPresent ( ) ) {
Optional < InsertResult > insertResult = insertPlaceholder ( sender , senderDevice , timestamp ) ;
if ( insertResult . isPresent ( ) ) {
smsDatabase . markAsDecryptFailed ( insertResult . get ( ) . getMessageId ( ) ) ;
messageNotifier. updateNotification ( context , insertResult . get ( ) . getThreadId ( ) ) ;
if ( insertResult . isPresent ( ) ) {
smsDatabase . markAsDecryptFailed ( insertResult . get ( ) . getMessageId ( ) ) ;
messageNotifier . updateNotification ( context , insertResult . get ( ) . getThreadId ( ) ) ;
}
} else {
smsDatabase. markAsDecryptFailed ( smsMessageId . get ( ) ) ;
}
} else {
smsDatabase . markAsDecryptFailed ( smsMessageId . get ( ) ) ;
}
// FIXME: This is a temporary patch for bad mac issues. At least with this people will be able to message again. We have to figure out the root cause of the issue though.
@ -1100,25 +1101,26 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
}
}
SessionManagementProtocol . triggerSessionRestorationUI ( context , sender );
SessionManagementProtocol . triggerSessionRestorationUI ( context , sender , timestamp );
}
private void handleNoSessionMessage ( @NonNull String sender , int senderDevice , long timestamp ,
@NonNull Optional < Long > smsMessageId )
{
SmsDatabase smsDatabase = DatabaseFactory . getSmsDatabase ( context ) ;
if ( SessionMetaProtocol . shouldErrorMessageShow ( context , timestamp ) ) {
if ( ! smsMessageId . isPresent ( ) ) {
Optional < InsertResult > insertResult = insertPlaceholder ( sender , senderDevice , timestamp ) ;
if ( ! smsMessageId . isPresent ( ) ) {
Optional < InsertResult > insertResult = insertPlaceholder ( sender , senderDevice , timestamp ) ;
if ( insertResult . isPresent ( ) ) {
smsDatabase . markAsNoSession ( insertResult . get ( ) . getMessageId ( ) ) ;
messageNotifier. updateNotification ( context , insertResult . get ( ) . getThreadId ( ) ) ;
if ( insertResult . isPresent ( ) ) {
smsDatabase . markAsNoSession ( insertResult . get ( ) . getMessageId ( ) ) ;
messageNotifier . updateNotification ( context , insertResult . get ( ) . getThreadId ( ) ) ;
}
} else {
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 ,