From f72406b06c72904280255f5f1f39e18425ceef9a Mon Sep 17 00:00:00 2001 From: Luke De Feo Date: Mon, 25 Jul 2022 14:51:41 -0700 Subject: [PATCH] Ensure that highlight always responds to prevent timeouts Summary: In a previous diff D32278523 (https://github.com/facebook/flipper/commit/8764da7c0b92b95a78072fac258691f05b396908) The desktop request was changed from send to call. Call expects a response and not all code paths return a response. Most calls to set highlight are timing out. Reviewed By: mweststrate Differential Revision: D38074704 fbshipit-source-id: 6e85416d6b6470efaa177ad1b74420c8237366d5 --- .../com/facebook/flipper/core/FlipperReceiver.java | 5 ++--- .../plugins/inspector/InspectorFlipperPlugin.java | 2 ++ .../FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.mm | 10 ++++++---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/android/src/main/java/com/facebook/flipper/core/FlipperReceiver.java b/android/src/main/java/com/facebook/flipper/core/FlipperReceiver.java index d12ca1451..1151dc89a 100644 --- a/android/src/main/java/com/facebook/flipper/core/FlipperReceiver.java +++ b/android/src/main/java/com/facebook/flipper/core/FlipperReceiver.java @@ -17,9 +17,8 @@ public interface FlipperReceiver { * Reciver for a request sent from the Flipper desktop client. * * @param params Optional set of parameters sent with the request. - * @param responder Optional responder for request. Some requests don't warrant a response - * through. In this case the request should be made from the desktop using send() instead of - * call(). + * @param responder Responder for request, ensure to respond otherwise request will time out on + * the desktop side */ void onReceive(FlipperObject params, FlipperResponder responder) throws Exception; } diff --git a/android/src/main/java/com/facebook/flipper/plugins/inspector/InspectorFlipperPlugin.java b/android/src/main/java/com/facebook/flipper/plugins/inspector/InspectorFlipperPlugin.java index 2b0fced5b..91e8c2b50 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/inspector/InspectorFlipperPlugin.java +++ b/android/src/main/java/com/facebook/flipper/plugins/inspector/InspectorFlipperPlugin.java @@ -420,6 +420,8 @@ public class InspectorFlipperPlugin implements FlipperPlugin { } mHighlightedId = nodeId; mHighlightedAlignmentMode = isAlignmentMode; + + responder.success(); } }; diff --git a/iOS/Plugins/FlipperKitLayoutPlugin/FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.mm b/iOS/Plugins/FlipperKitLayoutPlugin/FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.mm index 9ff368866..e6d56af5b 100644 --- a/iOS/Plugins/FlipperKitLayoutPlugin/FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.mm +++ b/iOS/Plugins/FlipperKitLayoutPlugin/FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.mm @@ -372,6 +372,10 @@ NSObject* flattenLayoutEditorMessage(NSObject* field) { - (void)onCallSetHighlighted:(NSString*)objectId withResponder:(id)responder { + if (objectId == nil || [objectId isKindOfClass:[NSNull class]]) { + [responder error:@{@"error" : @"parameter ObjectID was null"}]; + return; + } if (_lastHighlightedNode != nil) { id lastHighlightedObject = [_trackedObjects objectForKey:_lastHighlightedNode]; @@ -387,10 +391,6 @@ NSObject* flattenLayoutEditorMessage(NSObject* field) { _lastHighlightedNode = nil; } - if (objectId == nil || [objectId isKindOfClass:[NSNull class]]) { - return; - } - id object = [_trackedObjects objectForKey:objectId]; if (object == nil) { SKLog(@"tried to setHighlighted for untracked id, objectId: %@", objectId); @@ -402,6 +402,8 @@ NSObject* flattenLayoutEditorMessage(NSObject* field) { [descriptor setHighlighted:YES forNode:object]; _lastHighlightedNode = objectId; + + [responder success:@{}]; } - (void)onCallSetSearchActive:(BOOL)active