Export and import all the nodes
Summary: This diff does the following - Support to export the entire view hierarchy for iOS - Android is not supported yet - This diff adds a call `getAllNodes` to the client side of iOS, which returns the entire view hierarchy - Currently the search doesn't work on the imported layout plugin data. Also the imported layout plugin data doesn't expand the way it does when component is mounted, reason being the client passed to the plugin is not functional for the archived case I will work on fixing the last points in the next diffs stacked on the current one. For Android: - Currently the export function will export whatever is currently displayed on the Flipper app, not the entire view hierarchy Support for Android will also come up in later diffs. Reviewed By: jknoxville Differential Revision: D14209157 fbshipit-source-id: 3ad3e39edfd994913dc19cc239bfbbe011a9757c
This commit is contained in:
committed by
Facebook Github Bot
parent
99ea11b8e6
commit
af317eed2b
@@ -86,6 +86,10 @@
|
||||
[connection receive:@"getRoot" withBlock:^(NSDictionary *params, id<FlipperResponder> responder) {
|
||||
FlipperPerformBlockOnMainThread(^{ [weakSelf onCallGetRoot: responder]; }, responder);
|
||||
}];
|
||||
|
||||
[connection receive:@"getAllNodes" withBlock:^(NSDictionary *params, id<FlipperResponder> responder) {
|
||||
FlipperPerformBlockOnMainThread(^{ [weakSelf onCallGetAllNodesWithResponder: responder]; }, responder);
|
||||
}];
|
||||
|
||||
[connection receive:@"getNodes" withBlock:^(NSDictionary *params, id<FlipperResponder> responder) {
|
||||
FlipperPerformBlockOnMainThread(^{ [weakSelf onCallGetNodes: params[@"ids"] withResponder: responder]; }, responder);
|
||||
@@ -134,6 +138,29 @@
|
||||
[responder success: rootNode];
|
||||
}
|
||||
|
||||
- (void)populateAllNodesFromNode:(nonnull NSString *)identifier inDictionary:(nonnull NSMutableDictionary<NSString*, NSDictionary*> *)mutableDict {
|
||||
NSDictionary *nodeDict = [self getNode:identifier];
|
||||
mutableDict[identifier] = nodeDict;
|
||||
NSArray *arr = nodeDict[@"children"];
|
||||
for (NSString *childIdentifier in arr) {
|
||||
[self populateAllNodesFromNode:childIdentifier inDictionary:mutableDict];
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
- (void)onCallGetAllNodesWithResponder:(nonnull id<FlipperResponder>)responder {
|
||||
NSMutableArray<NSDictionary*> *allNodes = @[].mutableCopy;
|
||||
NSString *identifier = [self trackObject: _rootNode];
|
||||
NSDictionary *rootNode = [self getNode: identifier];
|
||||
if (!rootNode) {
|
||||
return [responder error:@{@"error": [NSString stringWithFormat:@"getNode returned nil for the rootNode %@, while getting all the nodes", identifier]}];
|
||||
}
|
||||
[allNodes addObject:rootNode];
|
||||
NSMutableDictionary *allNodesDict = @{}.mutableCopy;
|
||||
[self populateAllNodesFromNode:identifier inDictionary:allNodesDict];
|
||||
[responder success:@{@"allNodes": @{@"rootElement": identifier, @"elements": allNodesDict}}];
|
||||
}
|
||||
|
||||
- (void)onCallGetNodes:(NSArray<NSDictionary *> *)nodeIds withResponder:(id<FlipperResponder>)responder {
|
||||
NSMutableArray<NSDictionary *> *elements = [NSMutableArray new];
|
||||
|
||||
@@ -417,6 +444,10 @@
|
||||
return objectIdentifier;
|
||||
}
|
||||
|
||||
- (BOOL)runInBackground {
|
||||
return true;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user