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"]');