diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m index 10b6d8284..02f7acbf0 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m @@ -4301,6 +4301,9 @@ typedef enum : NSUInteger { - (void)acceptFriendRequest:(TSIncomingMessage *)friendRequest { + // Update the thread's friend request state + [self.thread setFriendRequestStatus:TSThreadFriendRequestStatusFriends withTransaction:nil]; + // Send friend request accepted message [ThreadUtil enqueueAcceptFriendRequestMessageInThread:self.thread]; } diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m index 491a90957..dd9e359c2 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.m +++ b/SignalServiceKit/src/Messages/OWSMessageManager.m @@ -1485,8 +1485,8 @@ NS_ASSUME_NONNULL_BEGIN // friend request status is reset to TSThreadFriendRequestStatusNone. Bob now sends Alice a friend // request. Alice's thread's friend request status is reset to // TSThreadFriendRequestStatusRequestReceived. - message.isFriendRequest = YES; // It's important that this happens before the friend request status update below [thread setFriendRequestStatus:TSThreadFriendRequestStatusRequestReceived withTransaction:transaction]; + message.isFriendRequest = YES; } } else if (!thread.isContactFriend) { // If the thread's friend request status is not TSThreadFriendRequestStatusFriends, but we're receiving a message, diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index c43c5c406..4a7d6f917 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -1119,10 +1119,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; // ======== if (messageType == TSFriendRequestMessageType) { [message.thread setFriendRequestStatus:TSThreadFriendRequestStatusRequestSent withTransaction:nil]; - } else if (message.thread.hasCurrentUserReceivedFriendRequest) { - // If the thread's current friend request state is TSThreadFriendRequestStatusRequestReceived, and we're sending a message, - // that means we're accepting the request. Declining a friend request doesn't send a message. - [message.thread setFriendRequestStatus:TSThreadFriendRequestStatusFriends withTransaction:nil]; } // ======== // Invoke the completion handler