mirror of
https://github.com/EnixCoda/Gitako.git
synced 2026-03-11 08:54:44 +00:00
refactor: always fetch default branch
This commit is contained in:
parent
35a313b51b
commit
31f803a03f
3 changed files with 30 additions and 76 deletions
|
|
@ -43,7 +43,7 @@ export const init: BoundMethodCreator = dispatch => async () => {
|
|||
dispatch.set({ state: 'disabled' })
|
||||
return
|
||||
}
|
||||
const { userName, repoName, branchName, defaultBranchName } = metaData
|
||||
const { userName, repoName, branchName } = metaData
|
||||
|
||||
DOMHelper.markGitakoReadyState(true)
|
||||
dispatch.set({
|
||||
|
|
@ -69,50 +69,39 @@ export const init: BoundMethodCreator = dispatch => async () => {
|
|||
)
|
||||
getTreeData.catch(error => error) // catch it early to prevent the error being raised higher
|
||||
|
||||
const defaultBranchName = await platform.getDefaultBranchName(
|
||||
{ userName, repoName },
|
||||
accessToken,
|
||||
)
|
||||
if (!defaultBranchName) {
|
||||
throw new Error(`Failed resolving default branch name`)
|
||||
}
|
||||
|
||||
const safeMetaData: MetaData = {
|
||||
userName,
|
||||
repoName,
|
||||
branchName: branchName || defaultBranchName,
|
||||
defaultBranchName,
|
||||
}
|
||||
dispatch.set({ metaData: safeMetaData })
|
||||
if (branchName) {
|
||||
const safeMetaData: MetaData = {
|
||||
userName,
|
||||
repoName,
|
||||
branchName,
|
||||
defaultBranchName,
|
||||
}
|
||||
dispatch.set({ metaData: safeMetaData })
|
||||
getTreeData.catch(error => {
|
||||
dispatch.call(handleError, error)
|
||||
})
|
||||
} else {
|
||||
const defaultBranchName = await platform.getDefaultBranchName(
|
||||
{ userName, repoName },
|
||||
} else if (defaultBranchName !== guessDefaultBranch && metaData.type !== 'pull') {
|
||||
// Accessing repository's non-homepage(no branch name in URL, nor in DOM)
|
||||
// We predicted its default branch to be 'master' and sent aggressive request
|
||||
// Throw that request due to the repo do not use {defaultBranchName} as default branch
|
||||
getTreeData = platform.getTreeData(
|
||||
{
|
||||
branchName: defaultBranchName,
|
||||
userName,
|
||||
repoName,
|
||||
},
|
||||
'/',
|
||||
true,
|
||||
accessToken,
|
||||
)
|
||||
|
||||
if (!defaultBranchName) {
|
||||
throw new Error(`Failed resolving default branch name`)
|
||||
}
|
||||
|
||||
const safeMetaData: MetaData = {
|
||||
userName,
|
||||
repoName,
|
||||
branchName: defaultBranchName,
|
||||
defaultBranchName,
|
||||
}
|
||||
dispatch.set({ metaData: safeMetaData })
|
||||
|
||||
if (defaultBranchName !== guessDefaultBranch && metaData.type !== 'pull') {
|
||||
// Accessing repository's non-homepage(no branch name in URL, nor in DOM)
|
||||
// We predicted its default branch to be 'master' and sent aggressive request
|
||||
// Throw that request due to the repo do not use {defaultBranchName} as default branch
|
||||
getTreeData = platform.getTreeData(
|
||||
{
|
||||
branchName: defaultBranchName,
|
||||
userName,
|
||||
repoName,
|
||||
},
|
||||
'/',
|
||||
true,
|
||||
accessToken,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
dispatch.set({ state: 'loading-tree' })
|
||||
|
|
|
|||
|
|
@ -232,23 +232,3 @@ export function attachCopySnippet() {
|
|||
)
|
||||
})
|
||||
}
|
||||
|
||||
export function getPath() {
|
||||
const folderPathElementSelector = '.file-navigation .position-relative' // available when in path like '/tree/...'
|
||||
const blobPathElementSelector = '#blob-path' // available when in path like '/blob/...'
|
||||
const pathElement =
|
||||
document.querySelector(blobPathElementSelector) ||
|
||||
document.querySelector(folderPathElementSelector)?.nextElementSibling
|
||||
if (!pathElement || !pathElement.querySelector('.js-repo-root')) {
|
||||
raiseError(new Error(`Path element not found`))
|
||||
return ''
|
||||
}
|
||||
const path = ((pathElement as HTMLDivElement).innerText || '')
|
||||
.replace(/ \/ Jump to $/, '')
|
||||
.trim()
|
||||
.split('/')
|
||||
.filter(Boolean)
|
||||
.slice(1) // the first is the repo's name
|
||||
.join('/')
|
||||
return path
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { raiseError } from 'analytics'
|
||||
import { GITHUB_OAUTH } from 'env'
|
||||
import { Base64 } from 'js-base64'
|
||||
import { platform } from 'platforms'
|
||||
|
|
@ -83,26 +82,13 @@ export function isEnterprise() {
|
|||
return !window.location.host.endsWith('github.com')
|
||||
}
|
||||
|
||||
function getBranchName() {
|
||||
const pathFromDOM = DOMHelper.getPath()
|
||||
const pathAndBranchFromURL = URLHelper.parse().path.filter(Boolean).join('/')
|
||||
if (pathAndBranchFromURL.endsWith(pathFromDOM)) {
|
||||
return pathAndBranchFromURL
|
||||
.slice(0, pathAndBranchFromURL.length - pathFromDOM.length)
|
||||
.replace(/\/$/, '')
|
||||
}
|
||||
raiseError(new Error(`Parsed path not end with path from DOM`))
|
||||
}
|
||||
|
||||
function resolvePageScope(defaultBranchName?: string) {
|
||||
const parsed = URLHelper.parse()
|
||||
switch (parsed.type) {
|
||||
// case undefined:
|
||||
// return `branch-${defaultBranchName}`
|
||||
case 'blob':
|
||||
case 'tree': {
|
||||
// handle URLs like {user}/{repo}/tree/{sha|branch}, issue#131
|
||||
const branchName = getBranchName()
|
||||
// handle URLs like {user}/{repo}/{'tree'|'blob'}/{sha|branch}, issue #131
|
||||
const branchName = DOMHelper.getCurrentBranch()
|
||||
if (branchName && branchName !== defaultBranchName) return `branch-${branchName}`
|
||||
break
|
||||
}
|
||||
|
|
@ -150,7 +136,6 @@ export const GitHub: Platform = {
|
|||
repoName,
|
||||
type,
|
||||
branchName,
|
||||
defaultBranchName: type ? undefined : branchName,
|
||||
}
|
||||
return metaData
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in a new issue