MCPcopy Create free account
hub / github.com/IQEngine/IQEngine / DataSourceForm

Function DataSourceForm

client/src/pages/admin/pages/add-data-source.tsx:13–177  ·  view source on GitHub ↗
({ initialData, isEditMode, setShowModal }: DataSourceFormProps)

Source from the content-addressed store, hash-verified

11}
12
13export 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 {

Callers

nothing calls this directly

Calls 2

useAddDataSourceFunction · 0.90
useUpdateDataSourceFunction · 0.90

Tested by

no test coverage detected