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;