@ -550,7 +550,7 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
{
try {
MmsDatabase database = DatabaseFactory . getMmsDatabase ( context ) ;
Recipient recipient = getMessage MasterDestination( content . getSender ( ) ) ;
Recipient recipient = getMessage Destination( content , message ) ;
IncomingMediaMessage mediaMessage = new IncomingMediaMessage ( getMessageMasterDestination ( content . getSender ( ) ) . getAddress ( ) ,
message . getTimestamp ( ) , - 1 ,
message . getExpiresInSeconds ( ) * 1000L , true ,
@ -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 ,