import React, { useCallback, useEffect } from 'react'; import { Box, Grid, Card, useTheme, Flex, IconButton, Button, useDisclosure } from '@chakra-ui/react'; import { useRouter } from 'next/router'; import { useUserStore } from '@/store/user'; import { useQuery } from '@tanstack/react-query'; import { AddIcon } from '@chakra-ui/icons'; import { delModelById } from '@/api/app'; import { useToast } from '@/hooks/useToast'; import { useConfirm } from '@/hooks/useConfirm'; import { serviceSideProps } from '@/utils/i18n'; import { useTranslation } from 'next-i18next'; import MyIcon from '@/components/Icon'; import PageContainer from '@/components/PageContainer'; import Avatar from '@/components/Avatar'; import MyTooltip from '@/components/MyTooltip'; import CreateModal from './component/CreateModal'; import styles from './index.module.scss'; const MyApps = () => { const { toast } = useToast(); const { t } = useTranslation(); const theme = useTheme(); const router = useRouter(); const { myApps, loadMyApps } = useUserStore(); const { openConfirm, ConfirmModal } = useConfirm({ title: '删除提示', content: '确认删除该应用所有信息?' }); const { isOpen: isOpenCreateModal, onOpen: onOpenCreateModal, onClose: onCloseCreateModal } = useDisclosure(); /* 点击删除 */ const onclickDelApp = useCallback( async (id: string) => { try { await delModelById(id); toast({ title: '删除成功', status: 'success' }); loadMyApps(true); } catch (err: any) { toast({ title: err?.message || '删除失败', status: 'error' }); } }, [toast, loadMyApps] ); /* 加载模型 */ useQuery(['loadModels'], () => loadMyApps(true), { refetchOnMount: true }); return ( {t('app.My Apps')} {myApps.map((app) => ( router.push(`/app/detail?appId=${app._id}`)} > {app.name} } variant={'base'} borderRadius={'md'} aria-label={'delete'} display={['', 'none']} _hover={{ bg: 'red.100' }} onClick={(e) => { e.stopPropagation(); openConfirm(() => onclickDelApp(app._id))(); }} /> {app.intro || '这个应用还没写介绍~'} } variant={'base'} borderRadius={'md'} aria-label={'delete'} display={['', 'none']} _hover={{ bg: 'myGray.100' }} onClick={(e) => { e.stopPropagation(); router.push(`/chat?appId=${app._id}`); }} /> ))} {isOpenCreateModal && ( loadMyApps(true)} /> )} ); }; export async function getServerSideProps(content: any) { return { props: { ...(await serviceSideProps(content)) } }; } export default MyApps;