import React, { useState } from 'react'; import { Box, Grid, Card, useTheme, Flex, IconButton, Button, Image } from '@chakra-ui/react'; import { useRouter } from 'next/router'; import { useQuery } from '@tanstack/react-query'; import { AddIcon } from '@chakra-ui/icons'; import { serviceSideProps } from '@/web/common/utils/i18n'; import { useTranslation } from 'next-i18next'; import MyIcon from '@/components/Icon'; import PageContainer from '@/components/PageContainer'; import Avatar from '@/components/Avatar'; import EditModal, { defaultForm, FormType } from './component/EditModal'; import { getUserPlugins } from '@/web/core/plugin/api'; import EmptyTip from '@/components/EmptyTip'; const MyModules = () => { const { t } = useTranslation(); const theme = useTheme(); const router = useRouter(); const [editModalData, setEditModalData] = useState(); /* load plugins */ const { data = [], isLoading, refetch } = useQuery(['loadModules'], () => getUserPlugins(), { refetchOnMount: true }); return ( {''} {t('plugin.My Plugins')}({t('common.Beta')}) {data.map((plugin) => ( router.push(`/plugin/edit?pluginId=${plugin._id}`)} > {plugin.name} } variant={'whitePrimary'} aria-label={'edit'} display={['', 'none']} _hover={{ bg: 'primary.100' }} onClick={(e) => { e.stopPropagation(); setEditModalData({ id: plugin._id, name: plugin.name, avatar: plugin.avatar, intro: plugin.intro }); }} /> {plugin.intro || t('plugin.No Intro')} ))} {data.length === 0 && } {!!editModalData && ( setEditModalData(undefined)} onSuccess={refetch} onDelete={refetch} /> )} ); }; export async function getServerSideProps(content: any) { return { props: { ...(await serviceSideProps(content)) } }; } export default MyModules;