import { MQTTBrokerInfo, createMQTTBroker, updateMQTTBroker, } from '@/api/mqttBrokers' import { FormField } from '@/components/FormField' import { Modal } from '@/components/Modal' import { useForm } from '@/utils/hooks/useForm' import { useMutation, useQueryClient } from 'react-query' type Props = { open: boolean onClose: () => void mqttBroker?: MQTTBrokerInfo } export const MQTTBrokerFormModal = ({ open, onClose, mqttBroker }: Props) => { const queryClient = useQueryClient() const createMutation = useMutation(createMQTTBroker) const updateMutation = useMutation(updateMQTTBroker) const { handleSubmit, register } = useForm({ defaultValue: () => ({ name: mqttBroker?.name ?? '', address: mqttBroker?.address ?? '', clientId: mqttBroker?.clientId ?? '', username: mqttBroker?.username ?? '', password: mqttBroker?.password ?? '', }), onSubmit: async (v) => { if (isLoading) { return } const data = { name: v.name, address: v.address, clientId: v.clientId, username: v.username, password: v.password, } if (mqttBroker) { await updateMutation.mutateAsync({ id: mqttBroker.id, ...data, }) } else { await createMutation.mutateAsync(data) } queryClient.invalidateQueries(['/mqtt/brokers']) onClose() }, }) const isLoading = createMutation.isLoading || updateMutation.isLoading return (
) }