mirror of https://github.com/msgbyte/tailchat
feat: 个人头像处未读消息提示
parent
d747531cc1
commit
e7e18cab35
@ -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';
|
Loading…
Reference in New Issue