diff --git a/client/src/components/AlertModals.jsx b/client/src/components/AlertModals.jsx index e15b519..cf7fe15 100644 --- a/client/src/components/AlertModals.jsx +++ b/client/src/components/AlertModals.jsx @@ -20,6 +20,20 @@ export const EditAlertModal = ({ rule, onClose, onSuccess }) => { webhook_url: '' }); const [saving, setSaving] = useState(false); + const [droneTypes, setDroneTypes] = useState([]); + + useEffect(() => { + const fetchDroneTypes = async () => { + try { + const response = await api.get('/drone-types'); + setDroneTypes(response.data); + } catch (error) { + console.error('Error fetching drone types:', error); + } + }; + + fetchDroneTypes(); + }, []); useEffect(() => { if (rule) { @@ -71,7 +85,19 @@ export const EditAlertModal = ({ rule, onClose, onSuccess }) => { setSaving(true); try { - await api.put(`/alerts/rules/${rule.id}`, formData); + const payload = { ...formData }; + + // Clean up empty values + if (!payload.description || payload.description.trim() === '') delete payload.description; + if (!payload.device_ids || payload.device_ids.length === 0) delete payload.device_ids; + if (!payload.drone_types || payload.drone_types.length === 0) delete payload.drone_types; + + // Only include webhook_url if webhook channel is selected + if (!payload.alert_channels || !payload.alert_channels.includes('webhook')) { + delete payload.webhook_url; + } + + await api.put(`/alerts/rules/${rule.id}`, payload); onSuccess(); onClose(); } catch (error) { @@ -169,13 +195,7 @@ export const EditAlertModal = ({ rule, onClose, onSuccess }) => {