From dff92bde6c52919ce64a04aae26b11023740e5ab Mon Sep 17 00:00:00 2001 From: EnixCoda Date: Sat, 23 Feb 2019 21:13:06 +0800 Subject: [PATCH] fix: visible nodes are not always available --- src/components/FileExplorer.tsx | 1 + src/driver/core/FileExplorer.ts | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/components/FileExplorer.tsx b/src/components/FileExplorer.tsx index bdc094a..353fcde 100644 --- a/src/components/FileExplorer.tsx +++ b/src/components/FileExplorer.tsx @@ -24,6 +24,7 @@ class FileExplorer extends React.Component { freeze: false, searchKey: '', searched: false, + visibleNodes: null, } componentWillMount() { diff --git a/src/driver/core/FileExplorer.ts b/src/driver/core/FileExplorer.ts index 0353eef..5ba2b21 100644 --- a/src/driver/core/FileExplorer.ts +++ b/src/driver/core/FileExplorer.ts @@ -12,7 +12,7 @@ import { raiseError } from 'analytics' export type ConnectorState = { stateText: string - visibleNodes: VisibleNodes + visibleNodes: VisibleNodes | null searchKey: string searched: boolean @@ -141,7 +141,9 @@ const handleKeyDown: MethodCreator< ConnectorState, [React.KeyboardEvent] > = dispatch => event => - dispatch.get(({ searched, visibleNodes: { nodes, focusedNode, expandedNodes, depths } }) => { + dispatch.get(({ searched, visibleNodes }) => { + if (!visibleNodes) return + const { nodes, focusedNode, expandedNodes, depths } = visibleNodes function handleVerticalMove(index: number) { if (0 <= index && index < nodes.length) { DOMHelper.focusFileExplorer() @@ -325,7 +327,9 @@ const focusNode: MethodCreator - dispatch.get(({ visibleNodes: { nodes } }) => { + dispatch.get(({ visibleNodes }) => { + if (!visibleNodes) return + const { nodes } = visibleNodes visibleNodesGenerator.focusNode(node) if (node && !skipScroll) { // when focus a node not in viewport(by keyboard), scroll to it @@ -354,6 +358,7 @@ const mountExpandingIndicator: MethodCreator< [TreeNode] > = dispatch => node => dispatch.get(({ visibleNodes }) => { + if (!visibleNodes) return const dummyVisibleNodes = { ...visibleNodes, nodes: visibleNodes.nodes.slice(),