Summary: Bloks ios is serializing some ns dictionary without registering the metadata, this means the look up fails. That said regsitering metadata for dictionarys where the keyspace is unbounded doesnt make any sense so for this case we can just fall back to the key as the name. Since we can rely on the id lookup passing we iterarates the enties of the object
Reviewed By: passy, ivanmisuno
Differential Revision: D49314398
fbshipit-source-id: 65f7beb0d8402b08a68b9f00b7605e0b6c44766f
Summary:
There was a frustrating issue previously where the UI would jump everytime a new frame came in with bloks data. This would occur constantly as the client was generating new frames every 10 seconds. The issue was because the previous appraoch to speed up the augmentation was to display the raw client raw and then asynchronously process a new frame with the added derived components.
The issue was the raw client frame has less nodes so we would breifly display this, and because the reduciton trace was cache on the next tick we would show this causing a jump.
Now we have a new solution:
1. We use an event emitter to push frames / metadata into the interceptor
2. The interceptor should always produce 1 frame, this can be the same or augmented, for open source its just the same
3. We use react query to check if we already have the reduction trace cached, if so then we are able to quickly process the whole thing, if not its split into 2 parts.
React query is also nice since we can add a cache time for the reduciton traces which are very large and not useful one your screen is gone. This should help keep memory usage under control a bit.
one other benefit to this approach is i can remove the error handling stuff from the main plugin code, since the blok augmentation is not on the critical path and it can retry internally and push out a new frame whenever.
Reviewed By: antonk52
Differential Revision: D49272152
fbshipit-source-id: e5539d36231a32754e8612014195449b9faafdb1
Summary: The `visible` prop is marked as deprecated in favour of `open`
Reviewed By: passy
Differential Revision: D49226821
fbshipit-source-id: 4a4a7d03a1c8ff860c4e4cd02e19071185a8554e
Summary:
Mostly mechanical change from jsx to object based api. However some changes:
1. Managed to get rid of UIDebugger context menu item. its now possible to listen to when any context menu is clicked
2. The construction code is cleaner. no more mutable arrary and pushing, its just a big spliced literal
3. Had to change how the ide function worked. It is dynamic and used react query hook to update the number of items. Added a callback to recreate this behaviour.
Reviewed By: aigoncharov
Differential Revision: D48910165
fbshipit-source-id: 9a71f5ecd302e6ff72194f83a13839f78e9b0796
Summary: Apply suggestion from D48605129 to have access to "modern" `replaceAll`.
Reviewed By: lblasa
Differential Revision: D48642120
fbshipit-source-id: 1e273fe5590e7b4a48c9176ef5f1afdab688b7d6
Summary:
Starting small as this will unblock D48642120.
If it works without causing any issues, I'll update the remaining ones.
We're on Node v18 everywhere now, so this should be compatible. According to https://node.green/ that should cover nearly everything.
Reviewed By: lblasa
Differential Revision: D48683680
fbshipit-source-id: 26d2788468b673793b70b6339d1845c1dcf7e05d
Summary:
[flipper] Don't break the build if the reactdevtools patching fails
There seems to be a bug in yarn workspaces on Windows:
```
Error: Cannot find module 'D:\\a\\flipper\\flipper\\desktop\\plugins\\public\\node_modules\\node_modules\\ts-node\\dist\\bin.js
```
Pull Request resolved: https://github.com/facebook/flipper/pull/5070
Test Plan: Let's see if CI will be happy again.
Reviewed By: lblasa
Differential Revision: D48681388
Pulled By: passy
fbshipit-source-id: d41f21be09c9d060e3c68e36466cfc54b3272325
Summary:
Gets rid of
{F1074904830}
See D48603710 for some more information.
This patches the bundle which includes the reference to silence the error.
Changelog: No longer show importFile.worker.worker.js warning on startup
Reviewed By: lblasa
Differential Revision: D48605129
fbshipit-source-id: 20dc292191742400c8c390a75b1e53f11630ad5a
Summary:
Given that we have to retry aggressively to fetch reduciton traces the blok augmentation can take a longer time. For cases like embedded bloks this can slow down the ui debugger even if you arent debuggin bloks. To avoid this we display the frame immediatley and then asynchronously augment it.
There is a possibility that you might see bloks bound tree nodes with no name briefly since this is this the state they come from the client as.
This isnt the ideal solution as the better way would be to do the unminification first and then add the derived components (which depends on reduction trace) after. This avoid this qurik but is a much bigger refactor so will do it another time if needed
Reviewed By: lblasa
Differential Revision: D48600897
fbshipit-source-id: 06fc5c5ecc6fe575f815d3ebca685f363275c84c
Summary: Use the visualiser as a reference for the event table
Reviewed By: antonk52
Differential Revision: D48562105
fbshipit-source-id: 8707efdcb0631e9716dd0a06e01518480ca2edc1
Summary: Now when entering framework event table from a tree root we filter that so you can see all tree events. Also we use exact matches to avoid and nasty substring bugs
Reviewed By: lblasa
Differential Revision: D48560169
fbshipit-source-id: 1df375a2b8c5035003d82c210b55adebda8bd4ec
Summary: This lets you debug when events go off screen
Reviewed By: lblasa
Differential Revision: D48395787
fbshipit-source-id: 51a6eb74fa0f61c34f25e86a6ee40bf5969379ee
Summary: Lets you filter a nodes events by thread or type
Reviewed By: lblasa
Differential Revision: D48346955
fbshipit-source-id: 455d65ad21c54c5ad26782ac6a446f7ae15a4356
Summary: Its easier this way since this is how they come out of android internally, also a bit nicer to display the full string this way
Reviewed By: lblasa
Differential Revision: D48346954
fbshipit-source-id: 997dd3922159683fcdf4b5f5f288702a5d998dc4
Summary: Now when you click on an event the bottom bar appears automatically showing you every thing you need
Reviewed By: lblasa
Differential Revision: D48318694
fbshipit-source-id: 6505e439d949941dc0e091b9576d7d1321d8a05f
Summary: This was complaining about mixing shorthand and separete css attributes. Just use separate since its clearer
Reviewed By: passy
Differential Revision: D48315864
fbshipit-source-id: e73e76d7fb94b3d7bba36a34d408202bc91933be
Summary: The bottom panel got broken during the virtualisation+ panel refactor, we need to tell the tree how much height is taken by the panel so it can size itself accordingly.
Reviewed By: lblasa
Differential Revision: D48313766
fbshipit-source-id: 849886101eb0869cc068fd0ad6dc1d053233043e
Summary:
Added new tree id to the framework event. Its currently optional.
The tree id is the parent component tree / tree manager this tree belongs to, this is so we can view all tree events at once in the table.
We ony show the context menu item when we have the tree root tag which is set for component tree only at this point. We can add for blok and ios later
Reviewed By: lblasa
Differential Revision: D48268120
fbshipit-source-id: 3dee06309b146a0392ca32fbb5e8231883b8439a
Summary: Implementation was missing for the browser. This provides a default implementation.
Reviewed By: aigoncharov
Differential Revision: D48311198
fbshipit-source-id: fd067600f571234e0fbccfb90853b62f175ff8fb
Summary: This mode is useless for leaves
Reviewed By: aigoncharov
Differential Revision: D47949539
fbshipit-source-id: 7f3ae6652ad696e9f550fe5b8f2298a1a3eff329
Summary: I noticed a slow down when using key board controls as this would change the selection. this adds the optimization back when wireframe mode == All
Reviewed By: antonk52
Differential Revision: D47949836
fbshipit-source-id: a08e5608c159d23b8a0afed419724c02231718d6
Summary:
Made rows smaller so you get to see more content
Monospace font
Reviewed By: antonk52
Differential Revision: D47949839
fbshipit-source-id: f8935e233838ff35acf8c1ab14bcf9b8f2153ab4
Summary: On certain apps there are a lot of views that have zero size and this isnt clear from the tree view. This will help
Reviewed By: lblasa
Differential Revision: D47917167
fbshipit-source-id: 180ef1cf34c3735acfd54d3498db9d29f759d959