import { apiInterceptors, collectApp, unCollectApp } from '@/client/api';
import { ChatContentContext } from '@/pages/chat';
import { ExportOutlined, LoadingOutlined, StarFilled, StarOutlined } from '@ant-design/icons';
import { Spin, Tag, Typography, message } from 'antd';
import copy from 'copy-to-clipboard';
import React, { useContext, useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import { useRequest } from 'ahooks';
import AppDefaultIcon from '../../common/AppDefaultIcon';
const tagColors = ['magenta', 'orange', 'geekblue', 'purple', 'cyan', 'green'];
const ChatHeader: React.FC<{ isScrollToTop: boolean }> = ({ isScrollToTop }) => {
const { appInfo, refreshAppInfo, handleChat, scrollRef, temperatureValue, resourceValue, currentDialogue } =
useContext(ChatContentContext);
const { t } = useTranslation();
const appScene = useMemo(() => {
return appInfo?.team_context?.chat_scene || 'chat_agent';
}, [appInfo]);
// 应用收藏状态
const isCollected = useMemo(() => {
return appInfo?.is_collected === 'true';
}, [appInfo]);
const { run: operate, loading } = useRequest(
async () => {
const [error] = await apiInterceptors(
isCollected ? unCollectApp({ app_code: appInfo.app_code }) : collectApp({ app_code: appInfo.app_code }),
);
if (error) {
return;
}
return await refreshAppInfo();
},
{
manual: true,
},
);
const paramKey: string[] = useMemo(() => {
return appInfo.param_need?.map(i => i.type) || [];
}, [appInfo.param_need]);
if (!Object.keys(appInfo).length) {
return null;
}
const shareApp = async () => {
const success = copy(location.href);
message[success ? 'success' : 'error'](success ? t('copy_success') : t('copy_failed'));
};
// 正常header
const headerContent = () => {
return (