import { Avatar, Icon } from 'tailchat-design'; import { openModal } from '@/components/Modal'; import { ModalCreateGroup } from '@/components/modals/CreateGroup'; import React, { useCallback, useMemo } from 'react'; import { GroupInfo, showSuccessToasts, t, useAppSelector, useGroupAck, useGroupUnreadState, } from 'tailchat-shared'; import { NavbarNavItem } from './NavItem'; import { Dropdown } from 'antd'; /** * 群组导航栏栏项 */ const GroupNavItem: React.FC<{ group: GroupInfo }> = React.memo(({ group }) => { const groupId = group._id; const unreadState = useGroupUnreadState(groupId); const { markGroupAllAck } = useGroupAck(groupId); const menu = { items: [ { key: 'ack', label: t('标记为已读'), icon: , onClick: () => { markGroupAllAck(); showSuccessToasts(t('已标记该群组所有消息已读')); }, }, ], }; return (
); }); GroupNavItem.displayName = 'GroupNavItem'; function useGroups(): GroupInfo[] { const groups = useAppSelector((state) => state.group.groups); return useMemo( () => Object.entries(groups).map(([_, group]) => group), [groups] ); } export const GroupNav: React.FC = React.memo(() => { const groups = useGroups(); const handleCreateGroup = useCallback(() => { openModal(); }, []); return (
{Array.isArray(groups) && groups.map((group) => (
))} {/* 创建群组 */}
); }); GroupNav.displayName = 'GroupNav';