feat: Implement alert system and network connectivity handling, refactor error handling across screens

This commit is contained in:
2026-01-30 12:38:25 +01:00
parent 9bb8279631
commit 7a6a7f5d35
14 changed files with 277 additions and 40 deletions

View File

@ -1,5 +1,6 @@
import { useAlert } from '@/components/AlertComponent';
import React, { useState } from 'react';
import { View, Text, Modal, TouchableOpacity, TextInput, ScrollView, Alert } from 'react-native';
import { View, Text, Modal, TouchableOpacity, TextInput, ScrollView } from 'react-native';
import DateTimePicker, { DateType, useDefaultStyles } from 'react-native-ui-datepicker';
import { TimeOffRequestType } from '@/types/types';
import { X } from 'lucide-react-native';
@ -16,6 +17,7 @@ interface RequestPermitModalProps {
export default function RequestPermitModal({ visible, types, onClose, onSubmit }: RequestPermitModalProps) {
const defaultStyles = useDefaultStyles();
const alert = useAlert();
const [type, setType] = useState<TimeOffRequestType>(types[0]); // Default to first type
const [date, setDate] = useState<string | null>();
const [range, setRange] = useState<{
@ -61,9 +63,9 @@ export default function RequestPermitModal({ visible, types, onClose, onSubmit }
const response = await api.post('/time-off-request/save-request', requestData);
if (response.data.status === 'success') {
Alert.alert('Successo', response.data.message || 'La tua richiesta è stata inviata con successo.');
alert.showAlert('success', 'Successo', response.data.message || 'La tua richiesta è stata inviata con successo.');
} else {
Alert.alert('Errore', response.data.message || 'Impossibile inviare la richiesta.');
alert.showAlert('error', 'Errore', response.data.message || 'Impossibile inviare la richiesta.');
}
} catch (error: any) {
console.error('Errore nell\'invio della richiesta:', error);
@ -74,7 +76,10 @@ export default function RequestPermitModal({ visible, types, onClose, onSubmit }
// Funzione per inviare la richiesta
const handleSubmit = async () => {
const error = validateRequest(type, date, range, startTime, endTime, message);
if (error) return Alert.alert("Errore", error);
if (error) {
alert.showAlert("error", "Errore", error);
return;
}
const requestData = {
id_type: type.id,
@ -90,7 +95,7 @@ export default function RequestPermitModal({ visible, types, onClose, onSubmit }
onSubmit(requestData); // TODO: Gestire risposta e controllare fetch in index?
onClose();
} catch (e) {
Alert.alert("Errore", "Impossibile inviare la richiesta.");
alert.showAlert("error", "Errore", "Impossibile inviare la richiesta.");
}
};