Clean OWSMessageManager documentation
This commit is contained in:
parent
145a3beb0a
commit
553a7149d5
|
@ -91,7 +91,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
_dbConnection = primaryStorage.newDatabaseConnection;
|
||||
_incomingMessageFinder = [[OWSIncomingMessageFinder alloc] initWithPrimaryStorage:primaryStorage];
|
||||
|
||||
// Loki: Add observation for new session
|
||||
// Loki: Observe session changes
|
||||
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(handleNewSessionAdopted:) name:kNSNotificationName_SessionAdopted object:nil];
|
||||
|
||||
OWSSingletonAssert();
|
||||
|
@ -429,7 +429,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
}
|
||||
OWSLogInfo(@"handling content: <Content: %@>", [self descriptionForContent:contentProto]);
|
||||
|
||||
// Loki: Handle device linking message
|
||||
// Loki: Handle device linking message if needed
|
||||
if (contentProto.lokiDeviceLinkMessage != nil) {
|
||||
NSString *masterHexEncodedPublicKey = contentProto.lokiDeviceLinkMessage.masterHexEncodedPublicKey;
|
||||
NSString *slaveHexEncodedPublicKey = contentProto.lokiDeviceLinkMessage.slaveHexEncodedPublicKey;
|
||||
|
@ -444,7 +444,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
}
|
||||
}
|
||||
|
||||
// Loki: Handle pre key bundle message
|
||||
// Loki: Handle pre key bundle message if needed
|
||||
if (contentProto.prekeyBundleMessage != nil) {
|
||||
OWSLogInfo(@"[Loki] Received a pre key bundle message from: %@.", envelope.source);
|
||||
PreKeyBundle *_Nullable bundle = [contentProto.prekeyBundleMessage createPreKeyBundleWithTransaction:transaction];
|
||||
|
@ -454,7 +454,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[self.primaryStorage setPreKeyBundle:bundle forContact:envelope.source transaction:transaction];
|
||||
}
|
||||
|
||||
// Loki: Check if we got a P2P address
|
||||
// Loki: Handle address message if needed
|
||||
if (contentProto.lokiAddressMessage) {
|
||||
NSString *address = contentProto.lokiAddressMessage.ptpAddress;
|
||||
uint32_t port = contentProto.lokiAddressMessage.ptpPort;
|
||||
|
@ -1393,8 +1393,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
serverTimestamp:serverTimestamp
|
||||
wasReceivedByUD:wasReceivedByUD];
|
||||
|
||||
// Loki: Parse Loki specific properties if needed
|
||||
if (envelope.isPtpMessage) { incomingMessage.isP2P = YES; }
|
||||
if (dataMessage.publicChatInfo && dataMessage.publicChatInfo.hasServerID) { incomingMessage.groupChatServerID = dataMessage.publicChatInfo.serverID; }
|
||||
if (dataMessage.publicChatInfo != nil && dataMessage.publicChatInfo.hasServerID) { incomingMessage.groupChatServerID = dataMessage.publicChatInfo.serverID; }
|
||||
|
||||
NSArray<TSAttachmentPointer *> *attachmentPointers =
|
||||
[TSAttachmentPointer attachmentPointersFromProtos:dataMessage.attachments
|
||||
|
@ -1438,6 +1439,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
// TODO: Do we need to fetch the device mapping here?
|
||||
|
||||
// Loki: Get the master hex encoded public key
|
||||
NSString *hexEncodedPublicKey = ([LKDatabaseUtilities getMasterHexEncodedPublicKeyFor:envelope.source in:transaction] ?: envelope.source);
|
||||
|
||||
OWSLogDebug(
|
||||
|
@ -1480,6 +1482,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
serverTimestamp:serverTimestamp
|
||||
wasReceivedByUD:wasReceivedByUD];
|
||||
|
||||
// Loki: Handle display name update if needed
|
||||
NSString *rawDisplayName = dataMessage.profile.displayName;
|
||||
if (rawDisplayName != nil && rawDisplayName.length > 0) {
|
||||
NSString *displayName = [NSString stringWithFormat:@"%@ (...%@)", rawDisplayName, [incomingMessage.authorId substringFromIndex:incomingMessage.authorId.length - 8]];
|
||||
|
@ -1488,6 +1491,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[self.profileManager setDisplayNameForContactWithID:thread.contactIdentifier to:nil with:transaction];
|
||||
}
|
||||
|
||||
// Loki: Parse Loki specific properties if needed
|
||||
if (envelope.isPtpMessage) { incomingMessage.isP2P = YES; }
|
||||
|
||||
NSArray<TSAttachmentPointer *> *attachmentPointers =
|
||||
|
@ -1556,6 +1560,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[thread saveFriendRequestStatus:LKThreadFriendRequestStatusRequestReceived withTransaction:transaction];
|
||||
message.friendRequestStatus = LKMessageFriendRequestStatusPending; // Don't save yet. This is done in finalizeIncomingMessage:thread:envelope:transaction.
|
||||
} else {
|
||||
// This can happen if Alice and Bob have a session, Bob deletes his app, restores from seed, and then sends a friend request to Alice again.
|
||||
[self handleEndSessionMessageWithEnvelope:envelope dataMessage:data transaction:transaction];
|
||||
}
|
||||
}
|
||||
|
@ -1567,7 +1572,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
if (envelope.isGroupChatMessage || envelope.type == SSKProtoEnvelopeTypeFriendRequest) return;
|
||||
// If we're already friends then there's no point in continuing
|
||||
// TODO: We'll need to fix this up if we ever start using sync messages
|
||||
// Currently it'll use `envelope.source` but with sync messages we need to use the message sender ID
|
||||
// Currently this uses `envelope.source` but with sync messages we'll need to use the message sender ID
|
||||
TSContactThread *thread = [TSContactThread getOrCreateThreadWithContactId:envelope.source transaction:transaction];
|
||||
if (thread.isContactFriend) return;
|
||||
// Become happy friends and go on great adventures
|
||||
|
@ -1607,7 +1612,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
[incomingMessage saveWithTransaction:transaction];
|
||||
|
||||
// Remove any old incoming messages
|
||||
// Loki: Remove any old incoming messages
|
||||
if (incomingMessage.isFriendRequest) {
|
||||
[thread removeOldIncomingFriendRequestMessagesIfNeededWithTransaction:transaction];
|
||||
}
|
||||
|
@ -1780,18 +1785,17 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
# pragma mark - Loki Session
|
||||
|
||||
- (void)handleNewSessionAdopted:(NSNotification *)notification {
|
||||
NSString *pubKey = notification.userInfo[kNSNotificationKey_ContactPubKey];
|
||||
if (pubKey.length == 0) { return; }
|
||||
NSString *hexEncodedPublicKey = notification.userInfo[kNSNotificationKey_ContactPubKey];
|
||||
if (hexEncodedPublicKey.length == 0) { return; }
|
||||
|
||||
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
|
||||
TSContactThread *_Nullable thread = [TSContactThread getThreadWithContactId:pubKey transaction:transaction];
|
||||
if (!thread) {
|
||||
NSLog(@"[Loki] A new session was adopted but we failed to get the thread for %@.", pubKey);
|
||||
TSContactThread *thread = [TSContactThread getThreadWithContactId:hexEncodedPublicKey transaction:transaction];
|
||||
if (thread == nil) {
|
||||
NSLog(@"[Loki] A new session was adopted but the thread couldn't be found for: %@.", hexEncodedPublicKey);
|
||||
return;
|
||||
}
|
||||
|
||||
// If we were the ones to initiate the reset then we need to send back an empty message
|
||||
|
||||
// If the current user initiated the reset then send back an empty message to acknowledge the completion of the session reset
|
||||
if (thread.sessionResetState == TSContactThreadSessionResetStateInitiated) {
|
||||
LKEphemeralMessage *emptyMessage = [[LKEphemeralMessage alloc] initInThread:thread];
|
||||
[self.messageSenderJobQueue addMessage:emptyMessage transaction:transaction];
|
||||
|
@ -1802,7 +1806,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
inThread:thread
|
||||
messageType:TSInfoMessageTypeLokiSessionResetDone] saveWithTransaction:transaction];
|
||||
|
||||
/// Loki: Set our session reset state to none
|
||||
// Clear the session reset state
|
||||
thread.sessionResetState = TSContactThreadSessionResetStateNone;
|
||||
[thread saveWithTransaction:transaction];
|
||||
}];
|
||||
|
|
Loading…
Reference in New Issue