Skip to content

Commit 0bfccfc

Browse files
committed
Refactor Feedly API integration to use browser.runtime API and convert callback functions to async/await syntax for improved readability and performance. Update storage access methods to utilize browser.storage API. Enhance user experience by ensuring all asynchronous operations are properly awaited, including loading options and user categories. Update internationalization calls to use browser.i18n for consistency across the extension.
1 parent bf0013f commit 0bfccfc

File tree

6 files changed

+461
-576
lines changed

6 files changed

+461
-576
lines changed

src/popup.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848

4949
<script src="scripts/jquery.min.js"></script>
5050
<script src="scripts/mustache.min.js"></script>
51+
<script src="scripts/browser-polyfill.min.js"></script>
5152
<script id="feedTemplate" type="text/x-handlebars-template">
5253
<div class="items">
5354
{{#feeds}}

src/scripts/background.js

Lines changed: 26 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -7,80 +7,41 @@
77
importScripts('browser-polyfill.min.js', 'feedly.api.js', 'core.js');
88

99
// Route messages from UI pages to background functions
10-
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
10+
browser.runtime.onMessage.addListener((message, sender) => {
1111
try {
1212
switch (message && message.type) {
13-
case 'getState': {
14-
sendResponse({
13+
case 'getState':
14+
return Promise.resolve({
1515
options: appGlobal.options,
1616
environment: appGlobal.environment,
1717
isLoggedIn: appGlobal.isLoggedIn || false
1818
});
19-
return false;
20-
}
21-
case 'getOptions': {
22-
sendResponse({ options: appGlobal.options });
23-
return false;
24-
}
25-
case 'getFeeds': {
26-
getFeeds(Boolean(message.forceUpdate), function (feeds, isLoggedIn) {
27-
sendResponse({ feeds, isLoggedIn });
28-
});
29-
return true;
30-
}
31-
case 'getSavedFeeds': {
32-
getSavedFeeds(Boolean(message.forceUpdate), function (feeds, isLoggedIn) {
33-
sendResponse({ feeds, isLoggedIn });
34-
});
35-
return true;
36-
}
37-
case 'markAsRead': {
38-
markAsRead(message.feedIds || [], function (ok) {
39-
sendResponse({ ok: !!ok });
40-
});
41-
return true;
42-
}
43-
case 'toggleSavedFeed': {
44-
toggleSavedFeed(message.feedIds || [], !!message.save, function (ok) {
45-
sendResponse({ ok: !!ok });
46-
});
47-
return true;
48-
}
49-
case 'openFeedlyTab': {
50-
openFeedlyTab();
51-
sendResponse({ ok: true });
52-
return false;
53-
}
54-
case 'resetCounter': {
55-
if (typeof resetCounter === 'function') {
56-
resetCounter();
57-
}
58-
sendResponse({ ok: true });
59-
return false;
60-
}
61-
case 'getFeedTabId': {
62-
sendResponse({ feedTabId: appGlobal.feedTabId || null });
63-
return false;
64-
}
65-
case 'setFeedTabId': {
19+
case 'getOptions':
20+
return Promise.resolve({ options: appGlobal.options });
21+
case 'getFeeds':
22+
return getFeeds(Boolean(message.forceUpdate));
23+
case 'getSavedFeeds':
24+
return getSavedFeeds(Boolean(message.forceUpdate));
25+
case 'markAsRead':
26+
return markAsRead(message.feedIds || []).then(ok => ({ ok: !!ok }));
27+
case 'toggleSavedFeed':
28+
return toggleSavedFeed(message.feedIds || [], !!message.save).then(ok => ({ ok: !!ok }));
29+
case 'openFeedlyTab':
30+
return openFeedlyTab().then(() => ({ ok: true }));
31+
case 'resetCounter':
32+
return (typeof resetCounter === 'function' ? Promise.resolve(resetCounter()) : Promise.resolve()).then(() => ({ ok: true }));
33+
case 'getFeedTabId':
34+
return Promise.resolve({ feedTabId: appGlobal.feedTabId || null });
35+
case 'setFeedTabId':
6636
appGlobal.feedTabId = message.tabId;
67-
sendResponse({ ok: true });
68-
return false;
69-
}
70-
case 'getAccessToken': {
71-
getAccessToken(function () {
72-
sendResponse({ ok: true });
73-
});
74-
return true;
75-
}
76-
default: {
77-
sendResponse({ error: 'Unknown message type' });
78-
return false;
79-
}
37+
return Promise.resolve({ ok: true });
38+
case 'getAccessToken':
39+
return getAccessToken().then(() => ({ ok: true }));
40+
default:
41+
return Promise.resolve({ error: 'Unknown message type' });
8042
}
8143
} catch (e) {
8244
try { console.error('background message error', e); } catch (_) {}
83-
sendResponse({ error: 'Internal error' });
84-
return false;
45+
return Promise.resolve({ error: 'Internal error' });
8546
}
8647
});

0 commit comments

Comments
 (0)