diff --git a/web/sidebar/community-picker.css b/web/sidebar/community-picker.css --- a/web/sidebar/community-picker.css +++ b/web/sidebar/community-picker.css @@ -72,3 +72,22 @@ padding-left: 12px; color: var(--fg); } + +span.chatBadge { + box-sizing: border-box; + display: flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + color: var(--fg); + background: var(--unread-bg); + border-radius: 13px; + font-size: var(--xs-font-12); + line-height: 1.25; + margin-right: 4px; +} + +span.chatBadgePlus { + width: 32px; +} diff --git a/web/sidebar/community-picker.react.js b/web/sidebar/community-picker.react.js --- a/web/sidebar/community-picker.react.js +++ b/web/sidebar/community-picker.react.js @@ -5,6 +5,7 @@ import { useDispatch } from 'react-redux'; import SWMansionIcon from 'lib/components/SWMansionIcon.react.js'; +import { unreadCount } from 'lib/selectors/thread-selectors.js'; import CommunityDrawer from './community-drawer.react.js'; import css from './community-picker.css'; @@ -66,6 +67,17 @@ [css.sideLineActive]: isSettingsOpen, }); + const boundUnreadCount = useSelector(unreadCount); + let chatBadge = null; + if (boundUnreadCount > 0 && !isCalendarOpen) { + if (boundUnreadCount < 100) { + chatBadge = {boundUnreadCount}; + } else { + const classes = classNames(css.chatBadge, css.chatBadgePlus); + chatBadge = 99+; + } + } + return (
@@ -73,6 +85,8 @@
{inboxButtonTitle}
+
+ {chatBadge}