fix: handle more branch name types

Handles projects not use ‘master’ as default branch
Handles projects has branches whose name contains ‘/‘
This commit is contained in:
EnixCoda 2018-09-22 17:04:59 +08:00
parent de1d1b07f0
commit 3c81f96079
2 changed files with 24 additions and 3 deletions

View file

@ -12,10 +12,10 @@ const init = dispatch => async () => {
dispatch(setMetaData, metaData)
const { access_token: accessToken, shortcut, compressSingletonFolder } = await configHelper.get()
dispatch({ accessToken, toggleShowSideBarShortcut: shortcut, compressSingletonFolder })
const defaultBranchName = 'master'
const detectedBranchName = DOMHelper.getCurrentBranch() || 'master'
let aggressivelyGotTreeData = GitHubHelper.getTreeData({
...metaData,
branchName: metaData.branchName || defaultBranchName,
branchName: detectedBranchName,
accessToken,
}).catch(err => {
nothingWentWrong = false
@ -25,7 +25,7 @@ const init = dispatch => async () => {
const projectDefaultBranchName = metaDataFromAPI['default_branch']
if (!metaData.branchName) {
// User accessed repo's homepage(no branch name in URL) and we predicted its default branch to be 'master'
if (projectDefaultBranchName !== defaultBranchName) {
if (projectDefaultBranchName !== detectedBranchName) {
// And the repo do not use {defaultBranchName} as default branch,
aggressivelyGotTreeData = GitHubHelper.getTreeData({
...metaData,

View file

@ -20,6 +20,24 @@ function setBodyIndent(shouldShowGitako) {
}
}
function isInCodePage() {
const branchListSelector = '.branch-select-menu'
const listElement = document.querySelector(branchListSelector)
return Boolean(listElement)
}
function getBranches() {
const branchSelector = '.branch-select-menu .select-menu-list > div .select-menu-item-text'
const branchElements = Array.from(document.querySelectorAll(branchSelector))
return branchElements.map(element => element.innerHTML.trim())
}
function getCurrentBranch() {
const selectedBranchSelector = '.select-menu.branch-select-menu .select-menu-modal .select-menu-list .select-menu-item.selected svg.select-menu-item-icon + span'
const selectedBranchElement = document.querySelector(selectedBranchSelector)
return selectedBranchElement ? selectedBranchElement.textContent.trim() : null
}
/**
* add the logo element into DOM
*
@ -338,4 +356,7 @@ export default {
scrollToRepoContent,
mountTopProgressBar,
unmountTopProgressBar,
isInCodePage,
getBranches,
getCurrentBranch,
}