Fix jwt-token
This commit is contained in:
@@ -796,6 +796,7 @@ const Alerts = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const CreateAlertRuleModal = ({ onClose, onSave }) => {
|
const CreateAlertRuleModal = ({ onClose, onSave }) => {
|
||||||
|
const { t } = useTranslation();
|
||||||
const [formData, setFormData] = useState({
|
const [formData, setFormData] = useState({
|
||||||
name: '',
|
name: '',
|
||||||
description: '',
|
description: '',
|
||||||
@@ -820,17 +821,35 @@ const CreateAlertRuleModal = ({ onClose, onSave }) => {
|
|||||||
fetchDevicesAndDroneTypes();
|
fetchDevicesAndDroneTypes();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
// Debug effect to monitor state changes
|
||||||
|
useEffect(() => {
|
||||||
|
console.log('🔍 CreateAlertRuleModal state:', {
|
||||||
|
droneTypesCount: droneTypes.length,
|
||||||
|
devicesCount: devices.length,
|
||||||
|
loadingData,
|
||||||
|
droneTypesData: droneTypes
|
||||||
|
});
|
||||||
|
}, [droneTypes, devices, loadingData]);
|
||||||
|
|
||||||
const fetchDevicesAndDroneTypes = async () => {
|
const fetchDevicesAndDroneTypes = async () => {
|
||||||
try {
|
try {
|
||||||
|
console.log('🔄 Fetching devices and drone types...');
|
||||||
|
|
||||||
const [devicesResponse, droneTypesResponse] = await Promise.all([
|
const [devicesResponse, droneTypesResponse] = await Promise.all([
|
||||||
api.get('/devices'),
|
api.get('/devices'),
|
||||||
api.get('/drone-types')
|
api.get('/drone-types')
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
console.log('📊 Devices response:', devicesResponse.data);
|
||||||
|
console.log('📊 Drone types response:', droneTypesResponse.data);
|
||||||
|
|
||||||
setDevices(devicesResponse.data.data || []);
|
setDevices(devicesResponse.data.data || []);
|
||||||
setDroneTypes(droneTypesResponse.data.data || []);
|
setDroneTypes(droneTypesResponse.data.data || []);
|
||||||
|
|
||||||
|
console.log('✅ Set devices:', devicesResponse.data.data?.length || 0);
|
||||||
|
console.log('✅ Set drone types:', droneTypesResponse.data.data?.length || 0);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error fetching devices and drone types:', error);
|
console.error('❌ Error fetching devices and drone types:', error);
|
||||||
} finally {
|
} finally {
|
||||||
setLoadingData(false);
|
setLoadingData(false);
|
||||||
}
|
}
|
||||||
@@ -1038,23 +1057,29 @@ const CreateAlertRuleModal = ({ onClose, onSave }) => {
|
|||||||
<div className="text-xs text-gray-500 mb-2">
|
<div className="text-xs text-gray-500 mb-2">
|
||||||
Leave empty to monitor all drone types
|
Leave empty to monitor all drone types
|
||||||
</div>
|
</div>
|
||||||
{droneTypes.map(droneType => (
|
{loadingData ? (
|
||||||
<label key={droneType.id} className="flex items-center">
|
<div className="text-sm text-gray-500">Loading drone types...</div>
|
||||||
<input
|
) : droneTypes.length === 0 ? (
|
||||||
type="checkbox"
|
<div className="text-sm text-red-500">No drone types available. Check API connection.</div>
|
||||||
checked={formData.drone_types.includes(droneType.id)}
|
) : (
|
||||||
onChange={(e) => handleDroneTypeChange(droneType.id, e.target.checked)}
|
droneTypes.map(droneType => (
|
||||||
className="h-4 w-4 text-primary-600 focus:ring-primary-500 border-gray-300 rounded"
|
<label key={droneType.id} className="flex items-center">
|
||||||
/>
|
<input
|
||||||
<span className="ml-2 text-sm text-gray-700">
|
type="checkbox"
|
||||||
{droneType.name}
|
checked={formData.drone_types.includes(droneType.id)}
|
||||||
<span className="text-xs text-gray-500 ml-1">({droneType.category})</span>
|
onChange={(e) => handleDroneTypeChange(droneType.id, e.target.checked)}
|
||||||
{droneType.threat_level === 'critical' && (
|
className="h-4 w-4 text-primary-600 focus:ring-primary-500 border-gray-300 rounded"
|
||||||
<span className="text-red-600 font-semibold ml-1">(⚠️ High Threat)</span>
|
/>
|
||||||
)}
|
<span className="ml-2 text-sm text-gray-700">
|
||||||
</span>
|
{droneType.name}
|
||||||
</label>
|
<span className="text-xs text-gray-500 ml-1">({droneType.category})</span>
|
||||||
))}
|
{droneType.threat_level === 'critical' && (
|
||||||
|
<span className="text-red-600 font-semibold ml-1">(⚠️ High Threat)</span>
|
||||||
|
)}
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
))
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user