From 142c19ef504e17f5a72114620468cab9755b03b2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Feb 2026 03:09:33 +0000 Subject: [PATCH] fix(browser): improve error handling and code quality - Fix response.json() called before checking response.ok in popup.js - Consolidate duplicate onInstalled listeners in background.js - Remove unnecessary return true from content.js message handler - Add better error handling for non-JSON responses - Improve user experience by not auto-opening popup on install Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> --- browser-extension/popup/popup.js | 16 ++++++++++------ browser-extension/scripts/background.js | 22 +++++++++------------- browser-extension/scripts/content.js | 2 -- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/browser-extension/popup/popup.js b/browser-extension/popup/popup.js index 8c7ae997..22f82558 100644 --- a/browser-extension/popup/popup.js +++ b/browser-extension/popup/popup.js @@ -109,18 +109,22 @@ sendFileBtn.addEventListener('click', async () => { credentials: 'include' }); - const result = await response.json(); - if (response.ok) { + const result = await response.json(); showStatus( `✓ File sent successfully! Task ID: ${result.task_id}\nFilename: ${result.filename}`, 'success' ); } else { - showStatus( - `Error: ${result.detail || 'Failed to send file'}`, - 'error' - ); + // Try to parse JSON error, fall back to status text + let errorMessage = 'Failed to send file'; + try { + const result = await response.json(); + errorMessage = result.detail || errorMessage; + } catch (e) { + errorMessage = `HTTP ${response.status}: ${response.statusText}`; + } + showStatus(`Error: ${errorMessage}`, 'error'); } } catch (error) { showStatus( diff --git a/browser-extension/scripts/background.js b/browser-extension/scripts/background.js index 90f90eaa..8fc110da 100644 --- a/browser-extension/scripts/background.js +++ b/browser-extension/scripts/background.js @@ -4,13 +4,18 @@ chrome.runtime.onInstalled.addListener((details) => { if (details.reason === 'install') { console.log('DocuElevate extension installed'); - // Open options page on first install - chrome.tabs.create({ - url: chrome.runtime.getURL('popup/popup.html') - }); + // Note: We don't open the popup automatically to avoid poor UX + // User can click the extension icon to configure } else if (details.reason === 'update') { console.log('DocuElevate extension updated'); } + + // Create context menu item + chrome.contextMenus.create({ + id: 'send-to-docuelevate', + title: 'Send to DocuElevate', + contexts: ['link', 'page'] + }); }); // Listen for messages from content script or popup @@ -59,15 +64,6 @@ async function handleSendUrl(data) { return await response.json(); } -// Add context menu item for sending URLs -chrome.runtime.onInstalled.addListener(() => { - chrome.contextMenus.create({ - id: 'send-to-docuelevate', - title: 'Send to DocuElevate', - contexts: ['link', 'page'] - }); -}); - // Handle context menu clicks chrome.contextMenus.onClicked.addListener(async (info, tab) => { if (info.menuItemId === 'send-to-docuelevate') { diff --git a/browser-extension/scripts/content.js b/browser-extension/scripts/content.js index 89db0e3b..72face41 100644 --- a/browser-extension/scripts/content.js +++ b/browser-extension/scripts/content.js @@ -12,9 +12,7 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { title: document.title }; sendResponse(pageInfo); - return true; // Indicates response will be sent asynchronously } - return false; // No async response }); // Detect if current page is a direct file link