mirror of
https://github.com/garrytan/gstack.git
synced 2026-05-31 15:29:39 +02:00
revert: remove brittle string-matching catches in extension files
Revert error-swallowing fixes in background.js and sidepanel.js that
matched error messages via includes('Failed to fetch'), includes(
'Extension context invalidated'), etc. In Chrome extensions, uncaught
errors crash the entire extension. The original catch-and-log pattern
is the correct choice for extension code where any error is non-fatal.
content.js and inspector.js changes kept — their TypeError/DOMException
catches are typed, not string-based.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
+6
-13
@@ -46,8 +46,7 @@ async function loadAuthToken() {
|
||||
if (data.token) authToken = data.token;
|
||||
}
|
||||
} catch (err) {
|
||||
if (!err?.message?.includes('Failed to fetch')) throw err;
|
||||
console.debug('[gstack bg] Auth token not available (server may not be running):', err.message);
|
||||
console.error('[gstack bg] Failed to load auth token:', err.message);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,8 +125,7 @@ async function notifyContentScripts(type) {
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
if (!err?.message?.includes('Extension context invalidated')) throw err;
|
||||
console.debug('[gstack bg] Tab notification skipped (extension context invalidated)');
|
||||
console.error('[gstack bg] Failed to query tabs for notification:', err.message);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,8 +180,7 @@ async function fetchAndRelayRefs() {
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
if (!err?.message?.includes('Failed to fetch')) throw err;
|
||||
console.debug('[gstack bg] Refs fetch skipped (server unreachable)');
|
||||
console.error('[gstack bg] Failed to fetch/relay refs:', err.message);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -206,15 +203,13 @@ async function injectInspector(tabId) {
|
||||
files: ['inspector.css'],
|
||||
});
|
||||
} catch (err) {
|
||||
if (!err?.message?.includes('Extension context invalidated') && !err?.message?.includes('Cannot access')) throw err;
|
||||
console.debug('[gstack bg] Inspector CSS injection failed (non-fatal):', err.message);
|
||||
}
|
||||
// Send startPicker to the injected inspector.js
|
||||
try {
|
||||
await chrome.tabs.sendMessage(tabId, { type: 'startPicker' });
|
||||
} catch (err) {
|
||||
if (!err?.message?.includes('Extension context invalidated') && !err?.message?.includes('Receiving end does not exist')) throw err;
|
||||
console.debug('[gstack bg] startPicker skipped (tab not ready):', err.message);
|
||||
console.warn('[gstack bg] Failed to send startPicker:', err.message);
|
||||
}
|
||||
inspectorMode = 'full';
|
||||
return { ok: true, mode: 'full' };
|
||||
@@ -237,8 +232,7 @@ async function stopInspector(tabId) {
|
||||
try {
|
||||
await chrome.tabs.sendMessage(tabId, { type: 'stopPicker' });
|
||||
} catch (err) {
|
||||
if (!err?.message?.includes('Extension context invalidated') && !err?.message?.includes('Receiving end does not exist')) throw err;
|
||||
console.debug('[gstack bg] stopPicker skipped (tab not ready):', err.message);
|
||||
console.debug('[gstack bg] Failed to stop picker on tab', tabId, ':', err.message);
|
||||
}
|
||||
return { ok: true };
|
||||
}
|
||||
@@ -276,8 +270,7 @@ async function sendToContentScript(tabId, message) {
|
||||
try {
|
||||
const response = await chrome.tabs.sendMessage(tabId, message);
|
||||
return response || { ok: true };
|
||||
} catch (e) {
|
||||
if (!e?.message?.includes('Extension context invalidated') && !e?.message?.includes('Receiving end does not exist')) throw e;
|
||||
} catch {
|
||||
return { error: 'Content script not available' };
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user