| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | import { useTranslation } from 'react-i18next'import useSWR from 'swr'import {  RiAddLine,} from '@remixicon/react'import Item from './item'import Empty from './empty'import { useModalContext } from '@/context/modal-context'import { fetchApiBasedExtensionList } from '@/service/common'const ApiBasedExtensionPage = () => {  const { t } = useTranslation()  const { setShowApiBasedExtensionModal } = useModalContext()  const { data, mutate, isLoading } = useSWR(    '/api-based-extension',    fetchApiBasedExtensionList,  )  const handleOpenApiBasedExtensionModal = () => {    setShowApiBasedExtensionModal({      payload: {},      onSaveCallback: () => mutate(),    })  }  return (    <div>      {        !isLoading && !data?.length && (          <Empty />        )      }      {        !isLoading && !!data?.length && (          data.map(item => (            <Item              key={item.id}              data={item}              onUpdate={() => mutate()}            />          ))        )      }      <div        className='flex items-center justify-center px-3 h-8 text-[13px] font-medium text-gray-700 rounded-lg bg-gray-50 cursor-pointer'        onClick={handleOpenApiBasedExtensionModal}      >        <RiAddLine className='mr-2 w-4 h-4' />        {t('common.apiBasedExtension.add')}      </div>    </div>  )}export default ApiBasedExtensionPage
 |