From 2e8d62b3ee7e3c976fa1fe2bb075a44ad762f0e9 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Fri, 17 May 2019 14:03:04 +1000 Subject: [PATCH] Fix friend request acceptance bug --- .../ConversationView/ConversationViewController.m | 3 +++ SignalServiceKit/src/Messages/OWSMessageManager.m | 2 +- SignalServiceKit/src/Messages/OWSMessageSender.m | 4 ---- 3 files changed, 4 insertions(+), 5 deletions(-) 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