Skip to content

Commit 62bf08c

Browse files
committed
Fix error handling in background message listener and clean up repo
- Made message listener async to properly catch Promise errors - Changed from Promise chains to await pattern for better error handling - Added block scoping for const declarations in switch cases - Remove AGENTS.md from repository tracking - Add Claude Code files (CLAUDE.md, .claude/, AGENTS.md) to .gitignore The try/catch block can now properly handle errors from async functions like getFeeds, getSavedFeeds, markAsRead, toggleSavedFeed, openFeedlyTab, and getAccessToken. Fixes #306
1 parent 0023527 commit 62bf08c

File tree

3 files changed

+34
-71
lines changed

3 files changed

+34
-71
lines changed

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,8 @@ bower_components
55
*.orig
66
keys.json
77
.vscode
8+
9+
# Claude Code project instructions
10+
CLAUDE.md
11+
.claude/
12+
AGENTS.md

AGENTS.md

Lines changed: 0 additions & 53 deletions
This file was deleted.

src/scripts/background.js

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,41 +22,52 @@ function ensureInitialized() {
2222
ensureInitialized();
2323

2424
// Route messages from UI pages to background functions
25-
browser.runtime.onMessage.addListener((message, sender) => {
26-
const ready = ensureInitialized();
25+
browser.runtime.onMessage.addListener(async (message, sender) => {
2726
try {
27+
await ensureInitialized();
28+
2829
switch (message && message.type) {
2930
case "getState":
30-
return ready.then(() => ({
31+
return {
3132
options: appGlobal.options,
3233
environment: appGlobal.environment,
3334
isLoggedIn: appGlobal.isLoggedIn || false
34-
}));
35+
};
3536
case "getOptions":
36-
return ready.then(() => ({ options: appGlobal.options }));
37+
return { options: appGlobal.options };
3738
case "getFeeds":
38-
return ready.then(() => getFeeds(Boolean(message.forceUpdate)));
39+
return await getFeeds(Boolean(message.forceUpdate));
3940
case "getSavedFeeds":
40-
return ready.then(() => getSavedFeeds(Boolean(message.forceUpdate)));
41-
case "markAsRead":
42-
return ready.then(() => markAsRead(message.feedIds || []).then(ok => ({ ok: !!ok })));
43-
case "toggleSavedFeed":
44-
return ready.then(() => toggleSavedFeed(message.feedIds || [], !!message.save).then(ok => ({ ok: !!ok })));
41+
return await getSavedFeeds(Boolean(message.forceUpdate));
42+
case "markAsRead": {
43+
const markResult = await markAsRead(message.feedIds || []);
44+
return { ok: !!markResult };
45+
}
46+
case "toggleSavedFeed": {
47+
const toggleResult = await toggleSavedFeed(message.feedIds || [], !!message.save);
48+
return { ok: !!toggleResult };
49+
}
4550
case "openFeedlyTab":
46-
return ready.then(() => openFeedlyTab().then(() => ({ ok: true })));
51+
await openFeedlyTab();
52+
return { ok: true };
4753
case "resetCounter":
48-
return ready.then(() => (typeof resetCounter === "function" ? Promise.resolve(resetCounter()) : Promise.resolve()).then(() => ({ ok: true })));
54+
if (typeof resetCounter === "function") {
55+
await Promise.resolve(resetCounter());
56+
}
57+
return { ok: true };
4958
case "getFeedTabId":
50-
return ready.then(() => ({ feedTabId: appGlobal.feedTabId || null }));
59+
return { feedTabId: appGlobal.feedTabId || null };
5160
case "setFeedTabId":
52-
return ready.then(() => { appGlobal.feedTabId = message.tabId; return { ok: true }; });
61+
appGlobal.feedTabId = message.tabId;
62+
return { ok: true };
5363
case "getAccessToken":
54-
return ready.then(() => getAccessToken().then(() => ({ ok: true })));
64+
await getAccessToken();
65+
return { ok: true };
5566
default:
56-
return Promise.resolve({ error: "Unknown message type" });
67+
return { error: "Unknown message type" };
5768
}
5869
} catch (e) {
5970
console.error("background message error", e);
60-
return Promise.resolve({ error: "Internal error" });
71+
return { error: "Internal error" };
6172
}
6273
});

0 commit comments

Comments
 (0)