From 5ccc3921355058b653574f7b4406e569b2f378a5 Mon Sep 17 00:00:00 2001 From: Chaiwat Ekkaewnumchai Date: Thu, 7 May 2020 06:16:12 -0700 Subject: [PATCH] Temporary Fix When Element Is Null Summary: a bug found while trying to use multiple selector on Wilde. The data returned from specific call is not in the form that we expect. This caused an exception on layout plugin when using the selector Specifically in WIlde, when we try to get data from node by calling client side to return it, sometimes the node has been invalidated or not saved. Hence, data returned are null or undefined. However, in previous implementation, this didn't take into consideration because we assumed that we always got correct data from client. Reviewed By: mweststrate Differential Revision: D21410989 fbshipit-source-id: 5135578606678973b504c9be897cb48fca547555 --- .../src/ui/components/elements-inspector/elements.tsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/desktop/app/src/ui/components/elements-inspector/elements.tsx b/desktop/app/src/ui/components/elements-inspector/elements.tsx index d392a7fd9..6bad20f0f 100644 --- a/desktop/app/src/ui/components/elements-inspector/elements.tsx +++ b/desktop/app/src/ui/components/elements-inspector/elements.tsx @@ -517,9 +517,13 @@ export class Elements extends PureComponent { } else { const virtualRoots: Set = new Set(); Object.keys(props.elements).forEach((id) => virtualRoots.add(id)); - Object.values(props.elements).forEach((element) => - element.children.forEach((id) => virtualRoots.delete(id)), - ); + for (const [currentId, element] of Object.entries(props.elements)) { + if (!element) { + virtualRoots.delete(currentId); + } else { + element.children.forEach((id) => virtualRoots.delete(id)); + } + } virtualRoots.forEach((id) => seed(id, 1)); }