| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  | import { useTranslation } from 'react-i18next' | 
					
						
							|  |  |  | import useSWR from 'swr' | 
					
						
							| 
									
										
										
										
											2024-06-20 11:05:08 +08:00
										 |  |  | import { | 
					
						
							|  |  |  |   RiAddLine, | 
					
						
							|  |  |  | } from '@remixicon/react' | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  | import Item from './item' | 
					
						
							|  |  |  | import Empty from './empty' | 
					
						
							| 
									
										
										
										
											2025-03-07 11:56:20 +08:00
										 |  |  | import Button from '@/app/components/base/button' | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  | 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()} | 
					
						
							|  |  |  |             /> | 
					
						
							|  |  |  |           )) | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2025-03-07 11:56:20 +08:00
										 |  |  |       <Button | 
					
						
							|  |  |  |         variant='secondary' | 
					
						
							|  |  |  |         className='w-full' | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  |         onClick={handleOpenApiBasedExtensionModal} | 
					
						
							|  |  |  |       > | 
					
						
							| 
									
										
										
										
											2025-03-21 17:41:03 +08:00
										 |  |  |         <RiAddLine className='mr-1 h-4 w-4' /> | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  |         {t('common.apiBasedExtension.add')} | 
					
						
							| 
									
										
										
										
											2025-03-07 11:56:20 +08:00
										 |  |  |       </Button> | 
					
						
							| 
									
										
										
										
											2023-11-06 19:36:32 +08:00
										 |  |  |     </div> | 
					
						
							|  |  |  |   ) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default ApiBasedExtensionPage |