Fix jwt-token

This commit is contained in:
2025-09-23 12:40:27 +02:00
parent aa4761a7e3
commit fe30501621

View File

@@ -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>