import React, { useCallback, useState } from 'react'; import { Box, Flex, Button, Grid, useTheme, IconButton } from '@chakra-ui/react'; import { useQuery } from '@tanstack/react-query'; import { useRouter } from 'next/router'; import { useUserStore } from '@/store/user'; import { useToast } from '@/hooks/useToast'; import { useLoading } from '@/hooks/useLoading'; import { delModelById } from '@/api/app'; import { useConfirm } from '@/hooks/useConfirm'; import dynamic from 'next/dynamic'; import { AppSchema } from '@/types/mongoSchema'; import Avatar from '@/components/Avatar'; import MyIcon from '@/components/Icon'; import TotalUsage from './Charts/TotalUsage'; const InfoModal = dynamic(() => import('./InfoModal')); import AppEdit from './edit'; import styles from '../../list/index.module.scss'; const Settings = ({ appId }: { appId: string }) => { const theme = useTheme(); const { toast } = useToast(); const router = useRouter(); const { Loading, setIsLoading } = useLoading(); const { appDetail, loadAppDetail } = useUserStore(); const { openConfirm, ConfirmChild } = useConfirm({ content: '确认删除该应用?' }); const [settingAppInfo, setSettingAppInfo] = useState(); const [fullScreen, setFullScreen] = useState(false); /* 点击删除 */ const handleDelModel = useCallback(async () => { if (!appDetail) return; setIsLoading(true); try { await delModelById(appDetail._id); toast({ title: '删除成功', status: 'success' }); router.replace(`/app/list`); } catch (err: any) { toast({ title: err?.message || '删除失败', status: 'error' }); } setIsLoading(false); }, [appDetail, setIsLoading, toast, router]); // load app data const { isLoading, refetch } = useQuery([appId], () => loadAppDetail(appId, true), { onError(err: any) { toast({ title: err?.message || '获取应用异常', status: 'error' }); router.replace('/app/list'); }, onSettled() { router.prefetch(`/chat?appId=${appId}`); } }); return ( 概览 {appDetail.name} } variant={'base'} borderRadius={'md'} aria-label={'delete'} _hover={{ bg: 'myGray.100', color: 'red.600' }} onClick={openConfirm(handleDelModel)} /> {appDetail.intro || '快来给应用一个介绍~'} 近 14 日消费 setFullScreen(val)} fullScreen={fullScreen} /> {settingAppInfo && ( setSettingAppInfo(undefined)} onSuccess={refetch} /> )} ); }; export default Settings;