From f9d6f1dce308afd36a67dcb71a55363772822b6d Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Thu, 7 Nov 2019 11:59:11 +1100 Subject: [PATCH] Clean utilities --- .../ConversationView/Cells/OWSMessageCell.m | 3 +-- .../ConversationView/Cells/OWSMessageFooterView.m | 2 +- .../ConversationView/ConversationViewController.m | 11 +++++------ .../src/Loki/Utilities/NSArray+Functional.h | 6 +++--- .../src/Loki/Utilities/NSArray+Functional.m | 14 +++++++------- .../src/Loki/Utilities/NSObject+Casting.h | 2 +- .../src/Loki/Utilities/NSObject+Casting.m | 2 +- .../src/Loki/Utilities/NSSet+Functional.h | 6 +++--- .../src/Loki/Utilities/NSSet+Functional.m | 14 +++++++------- SignalServiceKit/src/Messages/OWSMessageManager.m | 5 ++--- SignalServiceKit/src/Messages/OWSMessageSender.m | 8 +++----- 11 files changed, 34 insertions(+), 39 deletions(-) diff --git a/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.m b/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.m index 842b652b0..679cd182d 100644 --- a/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.m +++ b/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.m @@ -547,8 +547,7 @@ NS_ASSUME_NONNULL_BEGIN [OWSPrimaryStorage.sharedManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { linkedDeviceThreads = [LKDatabaseUtilities getLinkedDeviceThreadsFor:senderID in:transaction]; }]; - BOOL isFriend = [linkedDeviceThreads contains:^BOOL(NSObject *object) { - TSContactThread *thread = (TSContactThread *)object; + BOOL isFriend = [linkedDeviceThreads contains:^BOOL(TSContactThread *thread) { return thread.isContactFriend; }]; return !isFriend; diff --git a/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageFooterView.m b/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageFooterView.m index e32b3cc55..7c3317255 100644 --- a/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageFooterView.m +++ b/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageFooterView.m @@ -218,7 +218,7 @@ NS_ASSUME_NONNULL_BEGIN timestampLabelText = [DateUtil formatMessageTimestamp:viewItem.interaction.timestamp]; } - TSMessage *message = (TSMessage *)[viewItem.interaction as:TSMessage.class]; + TSMessage *message = [viewItem.interaction as:TSMessage.class]; if (message != nil && message.isP2P) { NSString *string = [timestampLabelText.localizedUppercaseString stringByAppendingString:@" ยท P2P"]; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string]; diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m index d6bbd686e..6267e2c31 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m @@ -1652,13 +1652,13 @@ typedef enum : NSUInteger { [OWSPrimaryStorage.sharedManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { linkedDeviceThreads = [LKDatabaseUtilities getLinkedDeviceThreadsFor:senderID in:transaction]; }]; - if ([linkedDeviceThreads contains:^BOOL(NSObject *object) { - return ((TSContactThread *)object).isContactFriend; + if ([linkedDeviceThreads contains:^BOOL(TSContactThread *thread) { + return thread.isContactFriend; }]) { isEnabled = true; isAttachmentButtonHidden = false; - } else if (![linkedDeviceThreads contains:^BOOL(NSObject *object) { - return ((TSContactThread *)object).hasPendingFriendRequest; + } else if (![linkedDeviceThreads contains:^BOOL(TSContactThread *thread) { + return thread.hasPendingFriendRequest; }]) { isEnabled = true; isAttachmentButtonHidden = true; @@ -3817,8 +3817,7 @@ typedef enum : NSUInteger { if (isBackspace) { self.currentMentionStartIndex = -1; [self.inputToolbar hideMentionCandidateSelectionView]; - NSArray *mentionsToRemove = [self.mentions filtered:^BOOL(NSObject *object) { - LKMention *mention = (LKMention *)object; + NSArray *mentionsToRemove = [self.mentions filtered:^BOOL(LKMention *mention) { return ![mention isContainedIn:newText]; }]; [self.mentions removeObjectsInArray:mentionsToRemove]; diff --git a/SignalServiceKit/src/Loki/Utilities/NSArray+Functional.h b/SignalServiceKit/src/Loki/Utilities/NSArray+Functional.h index cc8be8482..75c63332f 100644 --- a/SignalServiceKit/src/Loki/Utilities/NSArray+Functional.h +++ b/SignalServiceKit/src/Loki/Utilities/NSArray+Functional.h @@ -1,8 +1,8 @@ @interface NSArray (Functional) -- (BOOL)contains:(BOOL (^)(NSObject *))predicate; -- (NSArray *)filtered:(BOOL (^)(NSObject *))isIncluded; -- (NSArray *)map:(NSObject *(^)(NSObject *))transform; +- (BOOL)contains:(BOOL (^)(id))predicate; +- (NSArray *)filtered:(BOOL (^)(id))isIncluded; +- (NSArray *)map:(id (^)(id))transform; @end diff --git a/SignalServiceKit/src/Loki/Utilities/NSArray+Functional.m b/SignalServiceKit/src/Loki/Utilities/NSArray+Functional.m index 5011bcff0..8e8e5a131 100644 --- a/SignalServiceKit/src/Loki/Utilities/NSArray+Functional.m +++ b/SignalServiceKit/src/Loki/Utilities/NSArray+Functional.m @@ -2,17 +2,17 @@ @implementation NSArray (Functional) -- (BOOL)contains:(BOOL (^)(NSObject *))predicate { - for (NSObject *object in self) { +- (BOOL)contains:(BOOL (^)(id))predicate { + for (id object in self) { BOOL isPredicateSatisfied = predicate(object); if (isPredicateSatisfied) { return YES; } } return NO; } -- (NSArray *)filtered:(BOOL (^)(NSObject *))isIncluded { +- (NSArray *)filtered:(BOOL (^)(id))isIncluded { NSMutableArray *result = [NSMutableArray new]; - for (NSObject *object in self) { + for (id object in self) { if (isIncluded(object)) { [result addObject:object]; } @@ -20,10 +20,10 @@ return result; } -- (NSArray *)map:(NSObject *(^)(NSObject *))transform { +- (NSArray *)map:(id (^)(id))transform { NSMutableArray *result = [NSMutableArray new]; - for (NSObject *object in self) { - NSObject *transformedObject = transform(object); + for (id object in self) { + id transformedObject = transform(object); [result addObject:transformedObject]; } return result; diff --git a/SignalServiceKit/src/Loki/Utilities/NSObject+Casting.h b/SignalServiceKit/src/Loki/Utilities/NSObject+Casting.h index a8a5bf289..f22c78d60 100644 --- a/SignalServiceKit/src/Loki/Utilities/NSObject+Casting.h +++ b/SignalServiceKit/src/Loki/Utilities/NSObject+Casting.h @@ -1,6 +1,6 @@ @interface NSObject (Casting) -- (instancetype)as:(Class)cls; +- (id)as:(Class)cls; @end diff --git a/SignalServiceKit/src/Loki/Utilities/NSObject+Casting.m b/SignalServiceKit/src/Loki/Utilities/NSObject+Casting.m index cdd16015a..33afb994e 100644 --- a/SignalServiceKit/src/Loki/Utilities/NSObject+Casting.m +++ b/SignalServiceKit/src/Loki/Utilities/NSObject+Casting.m @@ -2,7 +2,7 @@ @implementation NSObject (Casting) -- (instancetype)as:(Class)cls { +- (id)as:(Class)cls { if ([self isKindOfClass:cls]) { return self; } return nil; } diff --git a/SignalServiceKit/src/Loki/Utilities/NSSet+Functional.h b/SignalServiceKit/src/Loki/Utilities/NSSet+Functional.h index c95e56e33..e812e1810 100644 --- a/SignalServiceKit/src/Loki/Utilities/NSSet+Functional.h +++ b/SignalServiceKit/src/Loki/Utilities/NSSet+Functional.h @@ -1,8 +1,8 @@ @interface NSSet (Functional) -- (BOOL)contains:(BOOL (^)(NSObject *))predicate; -- (NSSet *)filtered:(BOOL (^)(NSObject *))isIncluded; -- (NSSet *)map:(NSObject *(^)(NSObject *))transform; +- (BOOL)contains:(BOOL (^)(id))predicate; +- (NSSet *)filtered:(BOOL (^)(id))isIncluded; +- (NSSet *)map:(id (^)(id))transform; @end diff --git a/SignalServiceKit/src/Loki/Utilities/NSSet+Functional.m b/SignalServiceKit/src/Loki/Utilities/NSSet+Functional.m index 5e01748d0..c19d814fd 100644 --- a/SignalServiceKit/src/Loki/Utilities/NSSet+Functional.m +++ b/SignalServiceKit/src/Loki/Utilities/NSSet+Functional.m @@ -2,17 +2,17 @@ @implementation NSSet (Functional) -- (BOOL)contains:(BOOL (^)(NSObject *))predicate { - for (NSObject *object in self) { +- (BOOL)contains:(BOOL (^)(id))predicate { + for (id object in self) { BOOL isPredicateSatisfied = predicate(object); if (isPredicateSatisfied) { return YES; } } return NO; } -- (NSSet *)filtered:(BOOL (^)(NSObject *))isIncluded { +- (NSSet *)filtered:(BOOL (^)(id))isIncluded { NSMutableSet *result = [NSMutableSet new]; - for (NSObject *object in self) { + for (id object in self) { if (isIncluded(object)) { [result addObject:object]; } @@ -20,10 +20,10 @@ return result; } -- (NSSet *)map:(NSObject *(^)(NSObject *))transform { +- (NSSet *)map:(id (^)(id))transform { NSMutableSet *result = [NSMutableSet new]; - for (NSObject *object in self) { - NSObject *transformedObject = transform(object); + for (id object in self) { + id transformedObject = transform(object); [result addObject:transformedObject]; } return result; diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m index 2318db5ca..9957a40c5 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.m +++ b/SignalServiceKit/src/Messages/OWSMessageManager.m @@ -1557,8 +1557,7 @@ NS_ASSUME_NONNULL_BEGIN return YES; } NSSet *senderLinkedDeviceThreads = [LKDatabaseUtilities getLinkedDeviceThreadsFor:senderHexEncodedPublicKey in:transaction]; - if ([senderLinkedDeviceThreads contains:^BOOL(NSObject *object) { - TSContactThread *thread = (TSContactThread *)object; + if ([senderLinkedDeviceThreads contains:^BOOL(TSContactThread *thread) { return thread.isContactFriend; }]) { // Auto-accept if the user is friends with any of the sender's linked devices. @@ -1631,7 +1630,7 @@ NS_ASSUME_NONNULL_BEGIN if (thread.isContactFriend) return; // Become happy friends and go on great adventures [thread saveFriendRequestStatus:LKThreadFriendRequestStatusFriends withTransaction:transaction]; - TSOutgoingMessage *existingFriendRequestMessage = (TSOutgoingMessage *)[thread.lastInteraction as:TSOutgoingMessage.class]; + TSOutgoingMessage *existingFriendRequestMessage = [thread.lastInteraction as:TSOutgoingMessage.class]; if (existingFriendRequestMessage != nil && existingFriendRequestMessage.isFriendRequest) { [existingFriendRequestMessage saveFriendRequestStatus:LKMessageFriendRequestStatusAccepted withTransaction:transaction]; } diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index 5f3fb6a43..db9c3c62f 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -942,8 +942,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; [[LKAPI getDestinationsFor:contactID] .thenOn(OWSDispatch.sendingQueue, ^(NSArray *destinations) { // Get master destination - LKDestination *masterDestination = [destinations filtered:^BOOL(NSObject *object) { - LKDestination *destination = [object as:LKDestination.class]; + LKDestination *masterDestination = [destinations filtered:^BOOL(LKDestination *destination) { return [destination.kind isEqual:@"master"]; }].firstObject; // Send to master destination @@ -958,8 +957,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; } } // Get slave destinations - NSArray *slaveDestinations = [destinations filtered:^BOOL(NSObject *object) { - LKDestination *destination = [object as:LKDestination.class]; + NSArray *slaveDestinations = [destinations filtered:^BOOL(LKDestination *destination) { return [destination.kind isEqual:@"slave"]; }]; // Send to slave destinations (using a best attempt approach (i.e. ignoring the message send result) for now) @@ -1962,7 +1960,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; BOOL isSilent = message.isSilent; BOOL isOnline = message.isOnline; - LKAddressMessage *_Nullable addressMessage = [message as:[LKAddressMessage class]]; + LKAddressMessage *addressMessage = [message as:[LKAddressMessage class]]; BOOL isPing = addressMessage != nil && addressMessage.isPing; OWSMessageServiceParams *messageParams = [[OWSMessageServiceParams alloc] initWithType:messageType