From 2e6c7606c80b7fddadc9db4c28a02dfc3a018eea Mon Sep 17 00:00:00 2001 From: EnixCoda Date: Wed, 21 Oct 2020 21:08:13 +0800 Subject: [PATCH] feat: async mode --- src/components/FileExplorer.tsx | 11 +- src/components/Icon.tsx | 6 + src/components/Node.tsx | 8 +- src/components/SideBar.tsx | 3 +- src/driver/core/FileExplorer.ts | 68 ++---- src/driver/core/SideBar.ts | 9 +- src/global.d.ts | 5 +- src/platforms/GitHub/API.ts | 6 +- src/platforms/GitHub/index.ts | 47 +++- src/platforms/Gitee/index.ts | 6 +- src/platforms/platform.d.ts | 7 +- src/utils/EventHub.ts | 54 +++++ src/utils/VisibleNodesGenerator.ts | 365 ++++++++++++++++------------- src/utils/general.ts | 56 +++-- src/utils/gitSubmodule.ts | 15 +- 15 files changed, 417 insertions(+), 249 deletions(-) create mode 100644 src/utils/EventHub.ts diff --git a/src/components/FileExplorer.tsx b/src/components/FileExplorer.tsx index 565f86e..adaf560 100644 --- a/src/components/FileExplorer.tsx +++ b/src/components/FileExplorer.tsx @@ -30,14 +30,12 @@ const RawFileExplorer: React.FC = function RawFileExplor setUpTree, treeRoot, } = props - const { - val: { compressSingletonFolder }, - } = useConfigs() + const { val: config } = useConfigs() React.useEffect(() => { const { setUpTree, treeRoot, metaData } = props - setUpTree({ treeRoot, metaData, compressSingletonFolder }) - }, [setUpTree, treeRoot, compressSingletonFolder]) + setUpTree({ treeRoot, metaData, config }) + }, [setUpTree, treeRoot, config.compressSingletonFolder, config.access_token]) React.useEffect(() => { const { execAfterRender } = props @@ -141,7 +139,7 @@ const VirtualNode = React.memo(function VirtualNode({ searchKey && isValidRegexpSource(searchKey) ? new RegExp(searchKey, 'gi') : undefined if (!visibleNodes) return null - const { nodes, depths, focusedNode, expandedNodes } = visibleNodes + const { nodes, focusedNode, expandedNodes, loading, depths } = visibleNodes as VisibleNodes const node = nodes[index] return (
- + {name.includes('/') ? ( name.split('/').map((chunk, index) => ( @@ -77,9 +79,11 @@ export function Node({ const NodeItemIcon = React.memo(function NodeItemIcon({ node, open = false, + loading, }: { node: TreeNode open?: boolean + loading?: boolean }) { const { val: { icons }, @@ -96,7 +100,7 @@ const NodeItemIcon = React.memo(function NodeItemIcon({ {node.type === 'commit' ? ( diff --git a/src/components/SideBar.tsx b/src/components/SideBar.tsx index 75259e5..135a5fb 100644 --- a/src/components/SideBar.tsx +++ b/src/components/SideBar.tsx @@ -100,6 +100,7 @@ const RawGitako: React.FC = function RawGitako(props) { errorDueToAuth, metaData, treeData: treeRoot, + defer, error, shouldShow, showSettings, @@ -119,7 +120,7 @@ const RawGitako: React.FC = function RawGitako(props) {
{metaData ? :
} - + {defer &&

In Async Mode

}