Add UserStateWrapper and ProfileImageService for user state management and profile image handling

This commit is contained in:
Van Leemput Dayron
2025-11-05 09:31:58 +01:00
parent 30dca05e15
commit 75c12e35a5
6 changed files with 275 additions and 131 deletions

View File

@@ -0,0 +1,54 @@
import 'dart:io';
import 'package:firebase_storage/firebase_storage.dart';
import 'package:image_picker/image_picker.dart';
import 'error_service.dart';
class ProfileImageService {
static final FirebaseStorage _storage = FirebaseStorage.instance;
final ImagePicker _picker = ImagePicker();
final ErrorService _errorService = ErrorService();
Future<String?> uploadCustomProfileImage(
String userId,
XFile imageFile,
) async {
try {
final ref = _storage.ref().child('profile_images').child('$userId.jpg');
final uploadTask = ref.putFile(File(imageFile.path));
final snapshot = await uploadTask;
return await snapshot.ref.getDownloadURL();
} catch (e) {
_errorService.logError(
'ProfileImageService',
'Erreur lors du téléchargement de l\'image de profil pour $userId: $e',
);
return null;
}
}
Future<XFile?> pickProfileImageFromGallery() async {
try {
final XFile? image = await _picker.pickImage(source: ImageSource.gallery);
return image;
} catch (e) {
_errorService.logError(
'ProfileImageService',
'Erreur lors de la sélection de l\'image depuis la galerie: $e',
);
return null;
}
}
Future<XFile?> takePhoto() async {
try {
final XFile? photo = await _picker.pickImage(source: ImageSource.camera);
return photo;
} catch (e) {
_errorService.logError(
'ProfileImageService',
'Erreur lors de la prise de photo: $e',
);
return null;
}
}
}