import { Button, Center, Flex, Icon, Input, Modal, ModalBody, ModalCloseButton, ModalContent, ModalHeader, ModalOverlay, Spinner, Text, useDisclosure, useToast, } from '@chakra-ui/react'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import { __ } from '@wordpress/i18n'; import React from 'react'; import { BiFile, BiImport } from 'react-icons/bi'; import http from '../../../../../assets/js/back-end/utils/http'; import { urls } from './constants/urls'; interface Props { courseId: number; } interface ImportResponse { success: boolean; message: string; data?: any; } const Scorm: React.FC = (props) => { const { courseId } = props; const { isOpen, onOpen, onClose } = useDisclosure(); const toast = useToast(); const queryClient = useQueryClient(); const importMutation = useMutation({ mutationFn: (selectedFile) => { const formData = new FormData(); formData.append('file', selectedFile); formData.append('course_id', courseId.toString()); return http({ path: urls.scormImport, method: 'POST', body: formData, }); }, ...{ onSuccess() { toast({ title: __('Import Successful', 'learning-management-system'), status: 'success', isClosable: true, }); queryClient.invalidateQueries({ queryKey: ['builder' + courseId.toString()], }); onClose(); }, onError(error: any) { toast({ title: __('Import Failed', 'learning-management-system'), description: `${error?.message}`, status: 'error', isClosable: true, }); }, }, }); const handleFileChange = (event: React.ChangeEvent) => { if (event.target.files) { importMutation.mutate(event.target.files[0]); } }; return (
{/* * Secondary to the Add New Section button it sits beside — the * builder's neutral `surface` treatment, at that button's size. */} {__('Import SCORM Package', 'learning-management-system')} {importMutation.isPending ? ( {__('Uploading…', 'learning-management-system')} ) : ( {__( 'Choose a SCORM package file (.zip) to upload', 'learning-management-system', )} )}
); }; export default Scorm;