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 { AppSchema } from '@/types/mongoSchema'; import dynamic from 'next/dynamic'; import Avatar from '@/components/Avatar'; import MyIcon from '@/components/Icon'; import TotalUsage from './Charts/TotalUsage'; import BasicEdit from './BasicEdit'; const InfoModal = dynamic(() => import('./InfoModal')); const OverView = ({ 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 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 useQuery([appId], () => loadAppDetail(appId, true), { enabled: false }); return ( 基本信息 {appDetail.name} } variant={'base'} borderRadius={'md'} aria-label={'delete'} _hover={{ bg: 'myGray.100', color: 'red.600' }} onClick={openConfirm(handleDelModel)} /> {appDetail.intro || '快来给应用一个介绍~'} 近 14 日消费 {settingAppInfo && ( setSettingAppInfo(undefined)} /> )} ); }; export default OverView;