import { ChatContext } from '@/app/chat-context'; import { apiInterceptors, collectApp, newDialogue, unCollectApp } from '@/client/api'; import BlurredCard from '@/new-components/common/blurredCard'; import { IApp } from '@/types/app'; import { StarFilled, StarOutlined } from '@ant-design/icons'; import { Avatar, Empty, Spin } from 'antd'; import Image from 'next/image'; import { useRouter } from 'next/router'; import React, { useContext } from 'react'; import IconFont from '../common/Icon'; const TabContent: React.FC<{ apps: IApp[]; loading: boolean; refresh: () => void; type: 'used' | 'recommend' }> = ({ apps, refresh, loading, type, }) => { const collect = async (data: Record) => { const [error] = await apiInterceptors( data.is_collected === 'true' ? unCollectApp({ app_code: data.app_code }) : collectApp({ app_code: data.app_code }), ); if (error) return; refresh(); }; const { setAgent: setAgentToChat, model, setCurrentDialogInfo } = useContext(ChatContext); const router = useRouter(); const toChat = async (data: IApp) => { // 原生应用跳转 if (data.team_mode === 'native_app') { const { chat_scene = '' } = data.team_context; const [, res] = await apiInterceptors(newDialogue({ chat_mode: chat_scene })); if (res) { setCurrentDialogInfo?.({ chat_scene: res.chat_mode, app_code: data.app_code, }); localStorage.setItem( 'cur_dialog_info', JSON.stringify({ chat_scene: res.chat_mode, app_code: data.app_code, }), ); router.push(`/chat?scene=${chat_scene}&id=${res.conv_uid}${model ? `&model=${model}` : ''}`); } } else { // 自定义应用 const [, res] = await apiInterceptors(newDialogue({ chat_mode: 'chat_agent' })); if (res) { setCurrentDialogInfo?.({ chat_scene: res.chat_mode, app_code: data.app_code, }); localStorage.setItem( 'cur_dialog_info', JSON.stringify({ chat_scene: res.chat_mode, app_code: data.app_code, }), ); setAgentToChat?.(data.app_code); router.push(`/chat/?scene=chat_agent&id=${res.conv_uid}${model ? `&model=${model}` : ''}`); } } }; if (loading) { return ; } return (
{apps?.length > 0 ? ( apps.map(item => ( toChat(item)} RightTop={ item.is_collected === 'true' ? ( { e.stopPropagation(); collect(item); }} style={{ height: '21px', cursor: 'pointer', color: '#f9c533', }} /> ) : ( { e.stopPropagation(); collect(item); }} style={{ height: '21px', cursor: 'pointer', }} /> ) } LeftBottom={
{item.owner_name && (
{item.owner_name} {item.owner_name}
)} {/* 最近使用不展示热度值 */} {type !== 'used' && (
{item.hot_value}
)}
} scene={item?.team_context?.chat_scene || 'chat_agent'} /> )) ) : ( } className='flex justify-center items-center w-full h-full min-h-[200px]' /> )}
); }; export default TabContent;