({ initialData, isEditMode, setShowModal }: DataSourceFormProps)
| 11 | } |
| 12 | |
| 13 | export const DataSourceForm = ({ initialData, isEditMode, setShowModal }: DataSourceFormProps) => { |
| 14 | const addDataSource = useAddDataSource(); |
| 15 | const updateDataSource = useUpdateDataSource(); |
| 16 | const formRef = useRef<HTMLFormElement>(null); |
| 17 | |
| 18 | useEffect(() => { |
| 19 | const form = formRef.current; |
| 20 | if (initialData && form) { |
| 21 | form.name.value = initialData.name || ''; |
| 22 | form.account.value = initialData.account || ''; |
| 23 | form.container.value = initialData.container || ''; |
| 24 | form.description.value = initialData.description || ''; |
| 25 | form.imageURL.value = initialData.imageURL || ''; |
| 26 | form.sasToken.value = initialData.sasToken || ''; |
| 27 | form.accountKey.value = initialData.accountKey || ''; |
| 28 | form.owners.value = initialData.owners?.join(', ') || ''; |
| 29 | form.readers.value = initialData.readers?.join(', ') || ''; |
| 30 | form.public.value = initialData.public ? 'true' : 'false'; |
| 31 | } |
| 32 | }, [initialData]); |
| 33 | |
| 34 | const handleSubmit = (event: React.FormEvent) => { |
| 35 | event.preventDefault(); |
| 36 | const form = formRef.current; |
| 37 | |
| 38 | const formData: DataSource = { |
| 39 | type: ClientType.API, |
| 40 | name: event.target.elements.name.value, |
| 41 | account: event.target.elements.account.value, |
| 42 | container: event.target.elements.container.value, |
| 43 | description: event.target.elements.description.value, |
| 44 | imageURL: event.target.elements.imageURL.value, |
| 45 | sasToken: event.target.elements.sasToken.value, |
| 46 | accountKey: event.target.elements.accountKey.value, |
| 47 | owners: event.target.elements.owners.value === '' ? [] : event.target.elements.owners.value.split(',').map(s => s.trim()), |
| 48 | readers: event.target.elements.readers.value === '' ? [] : event.target.elements.readers.value.split(',').map(s => s.trim()), |
| 49 | public: event.target.elements.public.value.toLowerCase() === 'true' ? true : false, |
| 50 | |
| 51 | }; |
| 52 | |
| 53 | if (isEditMode) { |
| 54 | updateDataSource.mutate(formData, { |
| 55 | onSuccess: () => { |
| 56 | toast('Successfully updated data source', { |
| 57 | icon: '👍', |
| 58 | className: 'bg-green-100 font-bold', |
| 59 | }); |
| 60 | setShowModal(false); |
| 61 | }, |
| 62 | onError: (err, newMeta, context) => { |
| 63 | toast('Something went wrong updating the data source', { |
| 64 | icon: '😖', |
| 65 | className: 'bg-red-100 font-bold', |
| 66 | }); |
| 67 | console.error('onError', err); |
| 68 | }, |
| 69 | }); |
| 70 | } else { |
nothing calls this directly
no test coverage detected