feat: 个人头像处未读消息提示

pull/13/head
moonrailgun 4 years ago
parent d747531cc1
commit e7e18cab35

@ -158,7 +158,7 @@ export function createSocket(token: string): Promise<AppSocket> {
if (isDevelopment) {
_socket.onAny((...args) => {
console.log('Receive Notify:', args);
console.debug('Receive Notify:', args);
});
}
});

@ -0,0 +1,34 @@
import { Avatar } from '@/components/Avatar';
import React from 'react';
import { t, useDMConverseList, useUserInfo } from 'tailchat-shared';
import { useUnread } from 'tailchat-shared/redux/hooks/useUnread';
import { NavbarNavItem } from './NavItem';
function usePersonalUnread(): boolean {
const converse = useDMConverseList();
const unreads = useUnread(converse.map((converse) => String(converse._id)));
return unreads.some((u) => u === true);
}
export const PersonalNav: React.FC = React.memo(() => {
const userInfo = useUserInfo();
const unread = usePersonalUnread();
return (
<NavbarNavItem
name={t('我')}
to={'/main/personal'}
showPill={true}
badge={unread}
>
<Avatar
shape="square"
size={48}
name={userInfo?.nickname}
src={userInfo?.avatar}
/>
</NavbarNavItem>
);
});
PersonalNav.displayName = 'PersonalNav';

@ -1,32 +1,21 @@
import React from 'react';
import { t, useAppSelector } from 'tailchat-shared';
import { Avatar } from '@/components/Avatar';
import { NavbarNavItem } from './NavItem';
import { GroupNav } from './GroupNav';
import { MobileMenuBtn } from './MobileMenuBtn';
import { SettingBtn } from './SettingBtn';
import { Divider } from 'antd';
import { PersonalNav } from './PersonalNav';
/**
*
*/
export const Navbar: React.FC = React.memo(() => {
const userInfo = useAppSelector((state) => state.user.info);
return (
<div className="w-18 bg-navbar-light dark:bg-navbar-dark flex flex-col justify-start items-center pt-4 pb-4">
<MobileMenuBtn />
{/* Navbar */}
<div className="flex-1 w-full">
<NavbarNavItem name={t('我')} to={'/main/personal'} showPill={true}>
<Avatar
shape="square"
size={48}
name={userInfo?.nickname}
src={userInfo?.avatar}
/>
</NavbarNavItem>
<PersonalNav />
<div className="px-3">
<Divider />

Loading…
Cancel
Save