From 64df212cd3f05df58a1e31c9fe247394fda75961 Mon Sep 17 00:00:00 2001 From: Edward Pastuszenski Date: Thu, 28 Oct 2021 14:57:30 -0700 Subject: [PATCH] Support iOS FlipperConnection send with array parameters Summary: Achieving API parity with C++ and Android. Reviewed By: lblasa Differential Revision: D31921830 fbshipit-source-id: 873901107fc3c53166fa7bbaaff65ebdb0e53c2a --- .../CppBridge/FlipperCppBridgingConnection.mm | 10 +++++++- iOS/FlipperKit/FlipperConnection.h | 5 ++++ .../FlipperConnectionMock.h | 2 ++ .../FlipperConnectionMock.m | 25 +++++++++++++------ 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/iOS/FlipperKit/CppBridge/FlipperCppBridgingConnection.mm b/iOS/FlipperKit/CppBridge/FlipperCppBridgingConnection.mm index 711d89ae4..7e0413dab 100644 --- a/iOS/FlipperKit/CppBridge/FlipperCppBridgingConnection.mm +++ b/iOS/FlipperKit/CppBridge/FlipperCppBridgingConnection.mm @@ -25,12 +25,20 @@ #pragma mark - SonarConnection -- (void)send:(NSString*)method withParams:(NSDictionary*)params { +- (void)sendInternal:(NSString*)method withParams:(id)params { conn_->send( [method UTF8String], facebook::cxxutils::convertIdToFollyDynamic(params, true)); } +- (void)send:(NSString*)method withParams:(NSDictionary*)params { + [self sendInternal:method withParams:params]; +} + +- (void)send:(NSString*)method withArrayParams:(NSArray*)params { + [self sendInternal:method withParams:params]; +} + - (void)receive:(NSString*)method withBlock:(SonarReceiver)receiver { const auto lambda = [receiver]( diff --git a/iOS/FlipperKit/FlipperConnection.h b/iOS/FlipperKit/FlipperConnection.h index a4b90767c..3ff219727 100644 --- a/iOS/FlipperKit/FlipperConnection.h +++ b/iOS/FlipperKit/FlipperConnection.h @@ -23,6 +23,11 @@ Invoke a method on the Sonar desktop plugin with with a matching identifier. */ - (void)send:(NSString*)method withParams:(NSDictionary*)params; +/** +Invoke a method on the Sonar desktop plugin with with a matching identifier. +*/ +- (void)send:(NSString*)method withArrayParams:(NSArray*)params; + /** Register a receiver to be notified of incoming calls of the given method from the Sonar desktop plugin with a matching identifier. diff --git a/iOS/FlipperKitTestUtils/FlipperConnectionMock.h b/iOS/FlipperKitTestUtils/FlipperConnectionMock.h index 0f2d1acc4..002197cc0 100644 --- a/iOS/FlipperKitTestUtils/FlipperConnectionMock.h +++ b/iOS/FlipperKitTestUtils/FlipperConnectionMock.h @@ -16,5 +16,7 @@ NSDictionary* receivers; @property(nonatomic, readonly) NSDictionary*>* sent; +@property(nonatomic, readonly) + NSDictionary*>* sentWithArray; @end diff --git a/iOS/FlipperKitTestUtils/FlipperConnectionMock.m b/iOS/FlipperKitTestUtils/FlipperConnectionMock.m index 392cecc75..0a7bce2b8 100644 --- a/iOS/FlipperKitTestUtils/FlipperConnectionMock.m +++ b/iOS/FlipperKitTestUtils/FlipperConnectionMock.m @@ -14,23 +14,34 @@ _connected = YES; _receivers = @{}; _sent = @{}; + _sentWithArray = @{}; } return self; } -- (void)send:(NSString*)method withParams:(NSDictionary*)params { +- (void)sendInternal:(NSString*)method + withParams:(id)params + loggedTo:(NSDictionary* __strong*)sentLog { if (_connected) { - NSMutableDictionary* newSent = [NSMutableDictionary new]; - [newSent addEntriesFromDictionary:_sent]; - if (newSent[method]) { - newSent[method] = [_sent[method] arrayByAddingObject:params]; + NSMutableDictionary* newSentLog = [NSMutableDictionary new]; + [newSentLog addEntriesFromDictionary:*sentLog]; + if (newSentLog[method]) { + newSentLog[method] = [(*sentLog)[method] arrayByAddingObject:params]; } else { - newSent[method] = @[ params ]; + newSentLog[method] = @[ params ]; } - _sent = newSent; + *sentLog = newSentLog; } } +- (void)send:(NSString*)method withParams:(NSDictionary*)params { + [self sendInternal:method withParams:params loggedTo:&_sent]; +} + +- (void)send:(NSString*)method withArrayParams:(NSArray*)params { + [self sendInternal:method withParams:params loggedTo:&_sentWithArray]; +} + - (void)receive:(NSString*)method withBlock:(SonarReceiver)receiver { if (_connected) { NSMutableDictionary* newReceivers = [NSMutableDictionary new];