Respond to CR.

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

@ -672,21 +672,20 @@ 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;
for (TSInteraction *interaction in interactions) {
NSString *_Nullable messageAuthorId = nil; NSString *_Nullable messageAuthorId = nil;
if ([interaction isKindOfClass:[TSIncomingMessage class]]) { if ([interaction isKindOfClass:[TSIncomingMessage class]]) {
TSIncomingMessage *incomingMessage = (TSIncomingMessage *)interaction; TSIncomingMessage *incomingMessage = (TSIncomingMessage *)interaction;
@ -695,23 +694,27 @@ NS_ASSUME_NONNULL_BEGIN
messageAuthorId = localNumber; messageAuthorId = localNumber;
} }
if (messageAuthorId.length < 1) { if (messageAuthorId.length < 1) {
OWSFail(@"%@ Message missing author id.", self.logTag); return NO;
continue;
} }
if (![authorId isEqualToString:messageAuthorId]) { if (![authorId isEqualToString:messageAuthorId]) {
continue; return NO;
} }
if (![interaction.uniqueThreadId isEqualToString:threadUniqueId]) { if (![interaction.uniqueThreadId isEqualToString:threadUniqueId]) {
continue; return NO;
} }
if (result) { return YES;
}
withTransaction:transaction];
if (interactions.count < 1) {
return nil;
}
if (interactions.count > 1) {
// In case of collision, take the first. // In case of collision, take the first.
DDLogError(@"%@ more than one matching interaction in thread.", self.logTag); DDLogError(@"%@ more than one matching interaction in thread.", self.logTag);
continue; return nil;
}
result = interaction;
} }
return result; 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