From e90d3a400dcf801c4838497e6fb0ba016f4f9dba Mon Sep 17 00:00:00 2001 From: Max Radermacher Date: Wed, 16 Aug 2023 14:15:17 -0500 Subject: [PATCH] Fix check for outgoing sync messages to 1:1 chats --- .../OWSIncomingSentMessageTranscript.m | 7 ++++--- .../src/Messages/OWSMessageManager.m | 19 +++++++++++-------- 2 files changed, 15 insertions(+), 11 deletions(-) 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]; + } } }