Respond to CR.

pull/1/head
Matthew Chen 7 years ago
parent f2b416d800
commit 6a07599e00

@ -672,46 +672,49 @@ NS_ASSUME_NONNULL_BEGIN
+ (nullable TSInteraction *)findInteractionInThreadByTimestamp : (uint64_t)timestamp authorId + (nullable TSInteraction *)findInteractionInThreadByTimestamp : (uint64_t)timestamp authorId
: (NSString *)authorId threadUniqueId : (NSString *)threadUniqueId transaction : (NSString *)authorId threadUniqueId : (NSString *)threadUniqueId transaction
: (YapDatabaseReadTransaction *)transaction : (YapDatabaseReadTransaction *)transaction;
{ {
OWSAssert(timestamp > 0); OWSAssert(timestamp > 0);
OWSAssert(authorId.length > 0); OWSAssert(authorId.length > 0);
NSString *localNumber = [TSAccountManager localNumber]; NSString *localNumber = [TSAccountManager localNumber];
if (localNumber.length < 1) { if (localNumber.length < 1) {
OWSFail(@"%@ missing long number.", self.logTag);
return nil; return nil;
} }
NSArray<TSInteraction *> *interactions = NSArray<TSInteraction *> *interactions =
[TSInteraction interactionsWithTimestamp:timestamp ofClass:[TSMessage class] withTransaction:transaction]; [TSInteraction interactionsWithTimestamp:timestamp
filter:^(TSInteraction *interaction) {
TSInteraction *_Nullable result = nil; NSString *_Nullable messageAuthorId = nil;
for (TSInteraction *interaction in interactions) { if ([interaction isKindOfClass:[TSIncomingMessage class]]) {
NSString *_Nullable messageAuthorId = nil; TSIncomingMessage *incomingMessage = (TSIncomingMessage *)interaction;
if ([interaction isKindOfClass:[TSIncomingMessage class]]) { messageAuthorId = incomingMessage.authorId;
TSIncomingMessage *incomingMessage = (TSIncomingMessage *)interaction; } else if ([interaction isKindOfClass:[TSOutgoingMessage class]]) {
messageAuthorId = incomingMessage.authorId; messageAuthorId = localNumber;
} else if ([interaction isKindOfClass:[TSOutgoingMessage class]]) { }
messageAuthorId = localNumber; if (messageAuthorId.length < 1) {
} return NO;
if (messageAuthorId.length < 1) { }
OWSFail(@"%@ Message missing author id.", self.logTag);
continue; if (![authorId isEqualToString:messageAuthorId]) {
} return NO;
if (![authorId isEqualToString:messageAuthorId]) { }
continue; if (![interaction.uniqueThreadId isEqualToString:threadUniqueId]) {
} return NO;
if (![interaction.uniqueThreadId isEqualToString:threadUniqueId]) { }
continue; return YES;
} }
if (result) { withTransaction:transaction];
// In case of collision, take the first. if (interactions.count < 1) {
DDLogError(@"%@ more than one matching interaction in thread.", self.logTag); return nil;
continue;
}
result = interaction;
} }
return result; if (interactions.count > 1) {
// In case of collision, take the first.
DDLogError(@"%@ more than one matching interaction in thread.", self.logTag);
return nil;
}
return interactions[0];
} }
@end @end

@ -45,7 +45,7 @@ typedef NS_ENUM(NSInteger, OWSInteractionType) {
+ (NSArray<TSInteraction *> *)interactionsWithTimestamp:(uint64_t)timestamp + (NSArray<TSInteraction *> *)interactionsWithTimestamp:(uint64_t)timestamp
filter:(BOOL (^_Nonnull)(TSInteraction *))filter filter:(BOOL (^_Nonnull)(TSInteraction *))filter
withTransaction:(YapDatabaseReadWriteTransaction *)transaction; withTransaction:(YapDatabaseReadTransaction *)transaction;
- (NSDate *)dateForSorting; - (NSDate *)dateForSorting;
- (uint64_t)timestampForSorting; - (uint64_t)timestampForSorting;

Loading…
Cancel
Save