import React, { useCallback } from 'react'; import { Flex, Box, IconButton, HStack } from '@chakra-ui/react'; import { useRouter } from 'next/router'; import { useTranslation } from 'next-i18next'; import MyIcon from '@fastgpt/web/components/common/Icon'; import Avatar from '@/components/Avatar'; import { AppListItemType } from '@fastgpt/global/core/app/type'; import MyDivider from '@fastgpt/web/components/common/MyDivider'; import MyPopover from '@fastgpt/web/components/common/MyPopover/index'; import { getMyApps } from '@/web/core/app/api'; import { GetResourceFolderListProps, GetResourceListItemResponse } from '@fastgpt/global/common/parentFolder/type'; import { AppTypeEnum } from '@fastgpt/global/core/app/constants'; import dynamic from 'next/dynamic'; const SelectOneResource = dynamic(() => import('@/components/common/folder/SelectOneResource')); const SliderApps = ({ apps, activeAppId }: { apps: AppListItemType[]; activeAppId: string }) => { const { t } = useTranslation(); const router = useRouter(); const isTeamChat = router.pathname === '/chat/team'; const getAppList = useCallback(async ({ parentId }: GetResourceFolderListProps) => { return getMyApps({ parentId, type: [AppTypeEnum.folder, AppTypeEnum.simple, AppTypeEnum.workflow] }).then((res) => res.map((item) => ({ id: item._id, name: item.name, avatar: item.avatar, isFolder: item.type === AppTypeEnum.folder })) ); }, []); const onChangeApp = useCallback( (appId: string) => { router.replace({ query: { ...router.query, chatId: '', appId } }); }, [router] ); return ( {!isTeamChat && ( router.push('/app/list')} > } bg={'white'} boxShadow={'1px 1px 9px rgba(0,0,0,0.15)'} size={'smSquare'} borderRadius={'50%'} aria-label={''} /> {t('core.chat.Exit Chat')} )} {!isTeamChat && ( <> {t('core.chat.Recent use')} {t('common.More')} } > {({ onClose }) => ( { if (!id) return; onChangeApp(id); onClose(); }} server={getAppList} /> )} )} {apps.map((item) => ( onChangeApp(item._id) })} > {item.name} ))} ); }; export default SliderApps;