diff --git a/commafeed-client/src/App.tsx b/commafeed-client/src/App.tsx index 1ec84c7e..0e2d0f34 100644 --- a/commafeed-client/src/App.tsx +++ b/commafeed-client/src/App.tsx @@ -12,6 +12,7 @@ import { categoryUnreadCount } from "app/utils" import { ErrorBoundary } from "components/ErrorBoundary" import { Header } from "components/header/Header" import { Tree } from "components/sidebar/Tree" +import { useBrowserExtension } from "hooks/useBrowserExtension" import { useI18n } from "i18n" import { AdminUsersPage } from "pages/admin/AdminUsersPage" import { MetricsPage } from "pages/admin/MetricsPage" @@ -141,6 +142,18 @@ function FaviconHandler() { return null } +function BrowserExtensionBadgeUnreadCountHandler() { + const root = useAppSelector(state => state.tree.rootCategory) + const { setBadgeUnreadCount } = useBrowserExtension() + useEffect(() => { + if (!root) return + const unreadCount = categoryUnreadCount(root) + setBadgeUnreadCount(unreadCount) + }, [root, setBadgeUnreadCount]) + + return null +} + export function App() { useI18n() const dispatch = useAppDispatch() @@ -153,6 +166,7 @@ export function App() { <> + diff --git a/commafeed-client/src/hooks/useBrowserExtension.ts b/commafeed-client/src/hooks/useBrowserExtension.ts index 92e5cd3f..5523e5e5 100644 --- a/commafeed-client/src/hooks/useBrowserExtension.ts +++ b/commafeed-client/src/hooks/useBrowserExtension.ts @@ -31,6 +31,7 @@ export const useBrowserExtension = () => { const openSettingsPage = () => w.postMessage("open-settings-page", "*") const openAppInNewTab = () => w.postMessage("open-app-in-new-tab", "*") const openLinkInBackgroundTab = (url: string) => w.postMessage(`open-link-in-background-tab:${url}`, "*") + const setBadgeUnreadCount = (count: number) => w.postMessage(`set-badge-unread-count:${count}`, "*") return { browserExtensionVersion, @@ -40,5 +41,6 @@ export const useBrowserExtension = () => { openSettingsPage, openAppInNewTab, openLinkInBackgroundTab, + setBadgeUnreadCount, } }