import { useTranslate } from '@/hooks/common-hooks'; import { DownOutlined, GithubOutlined } from '@ant-design/icons'; import { Dropdown, MenuProps, Space } from 'antd'; import camelCase from 'lodash/camelCase'; import React, { useCallback, useMemo } from 'react'; import User from '../user'; import { useTheme } from '@/components/theme-provider'; import { LanguageList, LanguageMap, ThemeEnum } from '@/constants/common'; import { useChangeLanguage } from '@/hooks/logic-hooks'; import { useFetchUserInfo, useListTenant } from '@/hooks/user-setting-hooks'; import { TenantRole } from '@/pages/user-setting/constants'; import { BellRing, CircleHelp, MoonIcon, SunIcon } from 'lucide-react'; import { useNavigate } from 'umi'; import styled from './index.less'; const Circle = ({ children, ...restProps }: React.PropsWithChildren) => { return (
{children}
); }; const handleGithubCLick = () => { window.open('https://github.com/infiniflow/ragflow', 'target'); }; const handleDocHelpCLick = () => { window.open('https://ragflow.io/docs/dev/category/guides', 'target'); }; const RightToolBar = () => { const { t } = useTranslate('common'); const changeLanguage = useChangeLanguage(); const { setTheme, theme } = useTheme(); const navigate = useNavigate(); const { data: { language = 'English' }, } = useFetchUserInfo(); const handleItemClick: MenuProps['onClick'] = ({ key }) => { changeLanguage(key); }; const { data } = useListTenant(); const showBell = useMemo(() => { return data.some((x) => x.role === TenantRole.Invite); }, [data]); const items: MenuProps['items'] = LanguageList.map((x) => ({ key: x, label: {LanguageMap[x as keyof typeof LanguageMap]}, })).reduce((pre, cur) => { return [...pre!, { type: 'divider' }, cur]; }, []); const onMoonClick = React.useCallback(() => { setTheme(ThemeEnum.Light); }, [setTheme]); const onSunClick = React.useCallback(() => { setTheme(ThemeEnum.Dark); }, [setTheme]); const handleBellClick = useCallback(() => { navigate('/user-setting/team'); }, [navigate]); return (
{t(camelCase(language))} {theme === 'dark' ? ( ) : ( )} {showBell && (
)}
); }; export default RightToolBar;