From 16cfcd7200cd5f34ed51a5ac6ea11cae8551a569 Mon Sep 17 00:00:00 2001 From: EnixCoda Date: Fri, 15 Dec 2023 23:11:34 +0800 Subject: [PATCH] fix: ignore empty branch from branch selector element --- src/platforms/GitHub/DOMHelper.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/platforms/GitHub/DOMHelper.ts b/src/platforms/GitHub/DOMHelper.ts index 68bb777..bb6dc80 100644 --- a/src/platforms/GitHub/DOMHelper.ts +++ b/src/platforms/GitHub/DOMHelper.ts @@ -10,6 +10,7 @@ import { embeddedDataStruct } from './embeddedDataStructures' const selectors = { normal: { reactApp: `react-app[app-name="react-code-view"] [data-target="react-app.reactRoot"]`, + codeTab: '#code-tab', branchSwitcher: [`summary[title="Switch branches or tags"]`, `#branch-select-menu`].join(), fileNavigation: `.file-navigation`, breadcrumbs: `[data-testid="breadcrumbs"]`, @@ -160,7 +161,7 @@ export function getCurrentBranch(passive = false) { } const defaultTitle = 'Switch branches or tags' const title = branchButtonElement.title.trim() - if (title !== defaultTitle && !title.includes(' ')) return title + if (title && title !== defaultTitle && !title.includes(' ')) return title } const findFileButtonSelector = 'main .file-navigation a[data-hotkey="t"]' @@ -177,6 +178,17 @@ export function getCurrentBranch(passive = false) { } } + const branchNameFromCodeTab = $(selectors.normal.codeTab, e => { + if (e instanceof HTMLAnchorElement) { + const chunks = e.href.split('/') + const indexOfTree = chunks.indexOf('tree') + if (indexOfTree === -1) return + const branchName = chunks.slice(indexOfTree + 1).join('/') + return branchName + } + }) + if (branchNameFromCodeTab) return branchNameFromCodeTab + if (!passive) raiseError(new Error('cannot get current branch')) }