Bon checkpoint + refactoring

This commit is contained in:
DahoudG
2024-11-02 22:37:47 +00:00
parent 9cf96b7acf
commit 19f6efa995
27 changed files with 684 additions and 499 deletions

View File

@@ -14,6 +14,8 @@ import 'package:provider/provider.dart';
import '../../../core/errors/exceptions.dart';
import '../../../core/theme/theme_provider.dart';
import '../../../data/datasources/event_remote_data_source.dart';
import '../../../data/providers/user_provider.dart';
import '../../../domain/entities/user.dart';
import '../signup/SignUpScreen.dart';
/// L'écran de connexion où les utilisateurs peuvent s'authentifier.
@@ -102,30 +104,41 @@ class _LoginScreenState extends State<LoginScreen>
_formKey.currentState!.save(); // Sauvegarde des données saisies
try {
_btnController.start(); // Démarre l'animation de chargement du bouton
_btnController.start();
debugPrint("[LOG] Appel à l'API pour authentifier l'utilisateur.");
// Appel à l'API pour authentifier l'utilisateur
final UserModel user = await _userRemoteDataSource.authenticateUser(_email, _password);
// Validation de l'ID utilisateur
if (user.userId.isNotEmpty) {
debugPrint("[LOG] Utilisateur authentifié avec succès. ID: ${user.userId}");
// Sauvegarde des informations utilisateur
await _secureStorage.saveUserId(user.userId);
await _preferencesHelper.saveUserName(user.nom);
await _preferencesHelper.saveUserLastName(user.prenoms);
await _preferencesHelper.saveUserName(user.userLastName);
await _preferencesHelper.saveUserLastName(user.userFirstName);
// Met à jour le `UserProvider` avec les informations utilisateur authentifiées
final userProvider = Provider.of<UserProvider>(context, listen: false);
userProvider.setUser(User(
userId: user.userId,
userLastName: user.userLastName,
userFirstName: user.userFirstName,
email: user.email,
motDePasse: 'motDePasseHashé',
profileImageUrl: 'lib/assets/images/profile_picture.png',
eventsCount: user.eventsCount ?? 0,
friendsCount: user.friendsCount ?? 0,
postsCount: user.postsCount ?? 0,
visitedPlacesCount: user.visitedPlacesCount ?? 0,
));
_showToast("Connexion réussie !");
// Redirection vers l'écran d'accueil
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => HomeScreen(
userId: user.userId,
userName: user.nom,
userLastName: user.prenoms,
userFirstName: user.userFirstName,
userLastName: user.userLastName,
userProfileImage: 'lib/assets/images/profile_picture.png',
eventRemoteDataSource: EventRemoteDataSource(http.Client()),
),
@@ -136,25 +149,17 @@ class _LoginScreenState extends State<LoginScreen>
_showToast("Erreur : ID utilisateur manquant.");
}
} catch (e) {
// Gestion des erreurs spécifiques et log de chaque type d'erreur
if (e is ServerExceptionWithMessage) {
debugPrint("[ERROR] Erreur serveur : ${e.message}");
_showToast("Erreur serveur : ${e.message}");
} else if (e is UnauthorizedException) {
debugPrint("[ERROR] Erreur d'authentification : ${e.message}");
_showToast("Erreur : ${e.message}");
} else {
debugPrint("[ERROR] Erreur lors de la connexion : $e");
_showToast("Erreur lors de la connexion : ${e.toString()}");
}
_btnController.error(); // Affiche une erreur sur le bouton
// Gestion des erreurs
debugPrint("[ERROR] Erreur lors de la connexion : $e");
_showToast("Erreur lors de la connexion : ${e.toString()}");
_btnController.error();
setState(() {
_showErrorMessage = true;
});
} finally {
_btnController.reset(); // Réinitialise l'état du bouton
_btnController.reset();
setState(() {
_isSubmitting = false; // Réinitialise l'état de chargement
_isSubmitting = false;
});
}
} else {