index.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { useTranslation } from 'react-i18next'
  2. import useSWR from 'swr'
  3. import {
  4. RiAddLine,
  5. } from '@remixicon/react'
  6. import Item from './item'
  7. import Empty from './empty'
  8. import Button from '@/app/components/base/button'
  9. import { useModalContext } from '@/context/modal-context'
  10. import { fetchApiBasedExtensionList } from '@/service/common'
  11. const ApiBasedExtensionPage = () => {
  12. const { t } = useTranslation()
  13. const { setShowApiBasedExtensionModal } = useModalContext()
  14. const { data, mutate, isLoading } = useSWR(
  15. '/api-based-extension',
  16. fetchApiBasedExtensionList,
  17. )
  18. const handleOpenApiBasedExtensionModal = () => {
  19. setShowApiBasedExtensionModal({
  20. payload: {},
  21. onSaveCallback: () => mutate(),
  22. })
  23. }
  24. return (
  25. <div>
  26. {
  27. !isLoading && !data?.length && (
  28. <Empty />
  29. )
  30. }
  31. {
  32. !isLoading && !!data?.length && (
  33. data.map(item => (
  34. <Item
  35. key={item.id}
  36. data={item}
  37. onUpdate={() => mutate()}
  38. />
  39. ))
  40. )
  41. }
  42. <Button
  43. variant='secondary'
  44. className='w-full'
  45. onClick={handleOpenApiBasedExtensionModal}
  46. >
  47. <RiAddLine className='mr-1 h-4 w-4' />
  48. {t('common.apiBasedExtension.add')}
  49. </Button>
  50. </div>
  51. )
  52. }
  53. export default ApiBasedExtensionPage