diff --git a/SignalServiceKit/src/Messages/DeviceSyncing/OWSIncomingSentMessageTranscript.m b/SignalServiceKit/src/Messages/DeviceSyncing/OWSIncomingSentMessageTranscript.m index 2b1b7de70a..6f6d2b0130 100644 --- a/SignalServiceKit/src/Messages/DeviceSyncing/OWSIncomingSentMessageTranscript.m +++ b/SignalServiceKit/src/Messages/DeviceSyncing/OWSIncomingSentMessageTranscript.m @@ -84,11 +84,12 @@ NS_ASSUME_NONNULL_BEGIN OWSFailDebug(@"Invalid groupId."); return nil; } - } else if (sentProto.destinationServiceID) { + } else if (sentProto.destinationServiceID || sentProto.destinationE164) { SignalServiceAddress *destinationAddress = - [[SignalServiceAddress alloc] initWithServiceIdString:sentProto.destinationServiceID]; + [[SignalServiceAddress alloc] initWithServiceIdString:sentProto.destinationServiceID + phoneNumber:sentProto.destinationE164]; if (!destinationAddress.isValid) { - OWSFailDebug(@"Invalid serviceID."); + OWSFailDebug(@"Invalid destinationAddress."); return nil; } _recipientAddress = destinationAddress; diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m index 69a4b0f663..aa2982d3a7 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.m +++ b/SignalServiceKit/src/Messages/OWSMessageManager.m @@ -870,19 +870,22 @@ NS_ASSUME_NONNULL_BEGIN return; } - // If we observe a linked device sending our profile key to another user, - // we can infer that that user belongs in our profile whitelist. - SignalServiceAddress *destinationAddress = - [[SignalServiceAddress alloc] initWithServiceIdString:syncMessage.sent.destinationServiceID]; - if (dataMessage && destinationAddress.isValid && dataMessage.hasProfileKey) { + if (dataMessage && dataMessage.hasProfileKey) { if (groupId != nil) { [self.profileManager addGroupIdToProfileWhitelist:groupId userProfileWriter:UserProfileWriter_LocalUser transaction:transaction]; } else { - [self.profileManager addUserToProfileWhitelist:destinationAddress - userProfileWriter:UserProfileWriter_LocalUser - transaction:transaction]; + // If we observe a linked device sending our profile key to another user, + // we can infer that that user belongs in our profile whitelist. + SignalServiceAddress *destinationAddress = + [[SignalServiceAddress alloc] initWithServiceIdString:syncMessage.sent.destinationServiceID + phoneNumber:syncMessage.sent.destinationE164]; + if (destinationAddress.isValid) { + [self.profileManager addUserToProfileWhitelist:destinationAddress + userProfileWriter:UserProfileWriter_LocalUser + transaction:transaction]; + } } }