diff --git a/src/driver/core/SideBar.js b/src/driver/core/SideBar.js index 4dd3192..edace74 100644 --- a/src/driver/core/SideBar.js +++ b/src/driver/core/SideBar.js @@ -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, diff --git a/src/utils/DOMHelper.js b/src/utils/DOMHelper.js index d9546da..ff96e08 100644 --- a/src/utils/DOMHelper.js +++ b/src/utils/DOMHelper.js @@ -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, }