@ -227,27 +227,15 @@ public final class FriendRequestProtocol : NSObject {
guard ! envelope . isGroupChatMessage && envelope . type != . friendRequest else { return }
// I f w e g e t a n e n v e l o p e t h a t i s n ' t a f r i e n d r e q u e s t , t h e n w e c a n i n f e r t h a t w e h a d t o u s e
// S i g n a l c i p h e r d e c r y p t i o n a n d t h u s t h a t w e h a v e a s e s s i o n w i t h t h e o t h e r p e r s o n .
let thread = TSContactThread . getOrCreateThread ( withContactId : hexEncodedPublicKey , transaction : transaction )
let friendRequestStatus = storage . getFriendRequestStatus ( for : hexEncodedPublicKey , transaction : transaction ) ;
// W e s h o u l d n ' t b e a b l e t o s k i p f r o m n o n e t o f r i e n d s
guard friendRequestStatus != . none else { return }
// B e c o m e f r i e n d s
storage . setFriendRequestStatus ( . friends , for : hexEncodedPublicKey , transaction : transaction )
if let existingFriendRequestMessage = thread . getLastInteraction ( with : transaction ) as ? TSOutgoingMessage ,
existingFriendRequestMessage . isFriendRequest {
existingFriendRequestMessage . saveFriendRequestStatus ( . accepted , with : transaction )
}
/*
// S e n d o u r P 2 P d e t a i l s
if let addressMessage = LokiP2PAPI . onlineBroadcastMessage ( forThread : thread ) {
let messageSenderJobQueue = SSKEnvironment . shared . messageSenderJobQueue
messageSenderJobQueue . add ( message : addressMessage , transaction : transaction )
}
*/
}
@objc ( handleFriendRequestMessageIfNeeded : associatedWith : wrappedIn : in : using : )
public static func handleFriendRequestMessageIfNeeded ( _ dataMessage : SSKProtoDataMessage , associatedWith message : TSIncomingMessage , wrappedIn envelope : SSKProtoEnvelope , in thread : TSThread , using transaction : YapDatabaseReadWriteTransaction ) {
@objc ( handleFriendRequestMessageIfNeededFromEnvelope : using : )
public static func handleFriendRequestMessageIfNeeded ( from envelope : SSKProtoEnvelope , using transaction : YapDatabaseReadWriteTransaction ) {
guard ! envelope . isGroupChatMessage else {
print ( " [Loki] Ignoring friend request in group chat. " )
return
@ -261,15 +249,6 @@ public final class FriendRequestProtocol : NSObject {
}
if canFriendRequestBeAutoAccepted ( for : hexEncodedPublicKey , using : transaction ) {
storage . setFriendRequestStatus ( . friends , for : hexEncodedPublicKey , transaction : transaction )
var existingFriendRequestMessage : TSOutgoingMessage ?
thread . enumerateInteractions ( with : transaction ) { interaction , _ in
if let outgoingMessage = interaction as ? TSOutgoingMessage , outgoingMessage . isFriendRequest {
existingFriendRequestMessage = outgoingMessage
}
}
if let existingFriendRequestMessage = existingFriendRequestMessage {
existingFriendRequestMessage . saveFriendRequestStatus ( . accepted , with : transaction )
}
sendFriendRequestAcceptanceMessage ( to : hexEncodedPublicKey , using : transaction )
} else if storage . getFriendRequestStatus ( for : hexEncodedPublicKey , transaction : transaction ) != . friends {
// C h e c k i n g t h a t t h e s e n d e r o f t h e m e s s a g e i s n ' t a l r e a d y a f r i e n d i s n e c e s s a r y b e c a u s e o t h e r w i s e
@ -278,18 +257,6 @@ public final class FriendRequestProtocol : NSObject {
// r e q u e s t . A l i c e ' s t h r e a d ' s f r i e n d r e q u e s t s t a t u s i s r e s e t t o
// L K T h r e a d F r i e n d R e q u e s t S t a t u s R e q u e s t R e c e i v e d .
storage . setFriendRequestStatus ( . requestReceived , for : hexEncodedPublicKey , transaction : transaction )
// E x c e p t f o r t h e m e s s a g e . f r i e n d R e q u e s t S t a t u s = L K M e s s a g e F r i e n d R e q u e s t S t a t u s P e n d i n g l i n e b e l o w , a l l o f t h i s i s t o e n s u r e t h a t
// t h e r e ' s o n l y e v e r o n e m e s s a g e w i t h s t a t u s L K M e s s a g e F r i e n d R e q u e s t S t a t u s P e n d i n g i n a t h r e a d ( w h e r e a t h r e a d i s t h e c o m b i n a t i o n
// o f a l l t h r e a d s b e l o n g i n g t o t h e l i n k e d d e v i c e s o f a u s e r ) .
let linkedDeviceThreads = LokiDatabaseUtilities . getLinkedDeviceThreads ( for : hexEncodedPublicKey , in : transaction )
for thread in linkedDeviceThreads {
thread . enumerateInteractions ( with : transaction ) { interaction , _ in
guard let incomingMessage = interaction as ? TSIncomingMessage , incomingMessage . friendRequestStatus != . none else { return }
incomingMessage . saveFriendRequestStatus ( . none , with : transaction )
}
}
message . friendRequestStatus = . pending
// D o n ' t s a v e y e t . T h i s i s d o n e i n f i n a l i z e I n c o m i n g M e s s a g e : t h r e a d : m a s t e r T h r e a d : e n v e l o p e : t r a n s a c t i o n .
}
}
}