From 18cf30b7abfe5fc46f052610695c3003aa91ef04 Mon Sep 17 00:00:00 2001 From: EnixCoda Date: Thu, 30 Apr 2020 22:14:37 +0800 Subject: [PATCH] fix: resolve default branch when not found in DOM --- src/driver/core/SideBar.ts | 8 ++++---- src/platforms/GitHub/index.ts | 14 +++++--------- src/platforms/Gitee/index.ts | 14 +++++--------- src/platforms/platform.d.ts | 5 ++++- 4 files changed, 18 insertions(+), 23 deletions(-) diff --git a/src/driver/core/SideBar.ts b/src/driver/core/SideBar.ts index 1d8535e..4e0bbb6 100644 --- a/src/driver/core/SideBar.ts +++ b/src/driver/core/SideBar.ts @@ -50,7 +50,6 @@ export const init: BoundMethodCreator = dispatch => async () => { dispatch.set({ disabled: true }) return } - const detectedBranchName = metaData.branchName DOMHelper.markGitakoReadyState(true) dispatch.set({ errorDueToAuth: false, @@ -62,10 +61,11 @@ export const init: BoundMethodCreator = dispatch => async () => { const [, { configContext }] = dispatch.get() const { access_token: accessToken } = configContext.val - if (!metaData.branchName || !metaData.userName || !metaData.repoName) return + if (!metaData.userName || !metaData.repoName) return + const guessDefaultBranch = 'master' const getTreeDataAggressively = platform.getTreeData( { - branchName: metaData.branchName, + branchName: metaData.branchName || guessDefaultBranch, userName: metaData.userName, repoName: metaData.repoName, }, @@ -81,13 +81,13 @@ export const init: BoundMethodCreator = dispatch => async () => { let getTreeData = getTreeDataAggressively const metaDataFromAPI = await platform.getMetaData( { - branchName: metaData.branchName, userName: metaData.userName, repoName: metaData.repoName, }, accessToken, ) const projectDefaultBranchName = metaDataFromAPI?.defaultBranchName + const detectedBranchName = metaData.branchName if ( !detectedBranchName && projectDefaultBranchName && diff --git a/src/platforms/GitHub/index.ts b/src/platforms/GitHub/index.ts index d13a62a..ca77dae 100644 --- a/src/platforms/GitHub/index.ts +++ b/src/platforms/GitHub/index.ts @@ -92,22 +92,18 @@ export const GitHub: Platform = { const metaData = { ...URLHelper.parse(), - branchName: detectedBranchName || 'master', + branchName: detectedBranchName, } as MetaData return metaData }, - async getMetaData(rawMetaData, accessToken) { - const { userName, repoName, branchName } = rawMetaData + async getMetaData(partialMetaData, accessToken) { + const { userName, repoName } = partialMetaData const data = await API.getRepoMeta(userName, repoName, accessToken) - const metaData: MetaData = { - userName: data.owner.login, - repoName: data.name, - branchName, + return { userUrl: data?.owner?.html_url, repoUrl: data?.html_url, + defaultBranchName: data.default_branch, } - - return metaData }, async getTreeData(metaData, accessToken) { const { userName, repoName, branchName } = metaData diff --git a/src/platforms/Gitee/index.ts b/src/platforms/Gitee/index.ts index 5bafafd..95b8ada 100644 --- a/src/platforms/Gitee/index.ts +++ b/src/platforms/Gitee/index.ts @@ -92,22 +92,18 @@ export const Gitee: Platform = { const metaData = { ...URLHelper.parse(), - branchName: detectedBranchName || 'master', + branchName: detectedBranchName, } as MetaData return metaData }, - async getMetaData(rawMetaData, accessToken) { - const { userName, repoName, branchName } = rawMetaData + async getMetaData(partialMetaData, accessToken) { + const { userName, repoName } = partialMetaData const data = await API.getRepoMeta(userName, repoName, accessToken) - const metaData: MetaData = { - userName, - repoName, - branchName, + return { userUrl: data?.html_url?.replace(/(.*)\/.*?$/, '$1'), repoUrl: data?.html_url, + defaultBranchName: data.default_branch, } - - return metaData }, async getTreeData(metaData, accessToken) { const { userName, repoName, branchName } = metaData diff --git a/src/platforms/platform.d.ts b/src/platforms/platform.d.ts index c8c2d07..0746e30 100644 --- a/src/platforms/platform.d.ts +++ b/src/platforms/platform.d.ts @@ -1,6 +1,9 @@ type Platform = { resolveMeta(): MetaData | null - getMetaData(metaData: MetaData, accessToken?: string): Promise + getMetaData( + metaData: Pick, + accessToken?: string, + ): Promise> getTreeData(metaData: MetaData, accessToken?: string): Promise shouldShow(metaData?: Partial): boolean getCurrentPath(branchName: string): string[] | null