From 05d8588bb719fd40485a82ae58d9e35f5b3d587f Mon Sep 17 00:00:00 2001 From: "sentry[bot]" <39604003+sentry[bot]@users.noreply.github.com> Date: Fri, 25 Sep 2026 08:34:55 +0000 Subject: [PATCH] fix: Avoid error when Raw button is absent on GitHub file pages --- src/content/github/file/main.tsx | 12 ++++++++++-- src/content/github/file/utils/dropdown.tsx | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/content/github/file/main.tsx b/src/content/github/file/main.tsx index 0e81545..8c405c7 100644 --- a/src/content/github/file/main.tsx +++ b/src/content/github/file/main.tsx @@ -78,6 +78,10 @@ async function main(): Promise { print("file not detected at current URL"); return; } + if (!document.querySelector('[data-testid="raw-button"]')) { + print("Raw button not found – skipping coverage overlay (non-text file?)"); + return; + } globals.coverageButton = createCoverageButton(); await process(urlMetadata); } catch (e) { @@ -162,7 +166,9 @@ async function process(metadata: FileMetadata): Promise { previousElement: globals.coverageButton!, selectedOptions: selectedFlags, onClick: handleFlagClick, - }).then(({ button, list }) => { + }).then((result) => { + if (!result) return; + const { button, list } = result; globals.flagsButton = button; globals.flagsDrop = new Drop({ target: button, @@ -201,7 +207,9 @@ async function process(metadata: FileMetadata): Promise { previousElement: globals.coverageButton!, onClick: handleComponentClick, selectedOptions: selectedComponents, - }).then(({ button, list }) => { + }).then((result) => { + if (!result) return; + const { button, list } = result; globals.componentsButton = button; globals.componentsDrop = new Drop({ target: button, diff --git a/src/content/github/file/utils/dropdown.tsx b/src/content/github/file/utils/dropdown.tsx index 0a23048..c945529 100644 --- a/src/content/github/file/utils/dropdown.tsx +++ b/src/content/github/file/utils/dropdown.tsx @@ -19,7 +19,7 @@ export async function createDropdown({ }) { const rawButton = document.querySelector('[data-testid="raw-button"]'); if (!rawButton) { - throw new Error("Raw button not found"); + return null; } const dropdownButton = rawButton.cloneNode(true) as HTMLElement; const textNode = dropdownButton.querySelector('[data-component="text"]');