From e03566aa732a4da21e2de263ce83776dc2c5cecf Mon Sep 17 00:00:00 2001 From: EnixCoda Date: Mon, 10 May 2021 01:27:29 +0800 Subject: [PATCH] fix: set state on network error --- src/components/Gitako.tsx | 2 +- src/components/RepoContext.tsx | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/components/Gitako.tsx b/src/components/Gitako.tsx index ca91097..9a8b9c9 100644 --- a/src/components/Gitako.tsx +++ b/src/components/Gitako.tsx @@ -22,7 +22,7 @@ export function Gitako() { )} diff --git a/src/components/RepoContext.tsx b/src/components/RepoContext.tsx index 2c97118..0bfdedd 100644 --- a/src/components/RepoContext.tsx +++ b/src/components/RepoContext.tsx @@ -12,10 +12,17 @@ export const RepoContext = React.createContext(null) export function RepoContextWrapper({ children }: React.PropsWithChildren<{}>) { const partialMetaData = usePartialMetaData() + const $state = useLoadedContext(SideBarStateContext) + + React.useEffect(() => { + if (!partialMetaData) { + $state.onChange('disabled') + } + }, [partialMetaData]) const defaultBranch = useDefaultBranch(partialMetaData) const metaData = useMetaData(partialMetaData, defaultBranch) - return {metaData && children} + return {children} } function resolvePartialMetaData() { @@ -54,11 +61,13 @@ function useBranchName(): MetaData['branchName'] | null { function useDefaultBranch(partialMetaData: PartialMetaData | null) { const { accessToken } = useConfigs().value + const $state = useLoadedContext(SideBarStateContext) const $defaultBranch = useStateIO(null) const catchNetworkError = useCatchNetworkError() React.useEffect(() => { catchNetworkError(async () => { if (!partialMetaData) return + $state.onChange('meta-loading') const defaultBranch = await platform.getDefaultBranchName(partialMetaData, accessToken) $defaultBranch.onChange(defaultBranch) @@ -75,12 +84,6 @@ function useMetaData( const $metaData = useStateIO(null) const branchName = useBranchName() React.useEffect(() => { - if (!partialMetaData) { - $state.onChange('disabled') - } else if (!defaultBranchName) { - $state.onChange('meta-loading') - } - if (partialMetaData && defaultBranchName) { const { userName, repoName } = partialMetaData const safeMetaData: MetaData = { @@ -90,10 +93,10 @@ function useMetaData( defaultBranchName, } $metaData.onChange(safeMetaData) + $state.onChange('meta-loaded') } else { $metaData.onChange(null) } - $state.onChange('meta-loaded') }, [partialMetaData, branchName, defaultBranchName]) return $metaData.value }