HydroNutrify_Ari_e41221567/lib/logic/controllers/auth_controller.dart

92 lines
2.4 KiB
Dart

import 'package:mobile_monitoring/data/models/service_result.dart';
import 'package:mobile_monitoring/data/services/auth_service.dart';
import 'package:mobile_monitoring/data/services/register_service.dart';
import 'package:mobile_monitoring/logic/controllers/base_controller.dart';
class AuthController extends BaseController {
AuthController({AuthService? authService, RegisterService? registerService})
: _authService = authService ?? AuthService(),
_registerService = registerService ?? RegisterService();
final AuthService _authService;
final RegisterService _registerService;
bool _isLoading = false;
String? _lastMessage;
bool get isLoading => _isLoading;
String? get lastMessage => _lastMessage;
String? get currentUserId => _authService.currentUser?.uid;
Future<ServiceResult<void>> login({
required String email,
required String password,
}) async {
_setLoading(true);
final result = await _authService.signInWithEmailAndPassword(
email: email.trim(),
password: password,
);
_setLoading(false);
_lastMessage = result.message;
notifyListeners();
if (!result.success) {
return ServiceResult.failure(
message: result.message,
errorCode: result.errorCode,
);
}
return ServiceResult.success(message: result.message);
}
Future<ServiceResult<void>> register({
required String name,
required String email,
required String password,
required String confirmPassword,
}) async {
_setLoading(true);
final result = await _registerService.register(
RegisterRequest(
name: name,
email: email,
password: password,
confirmPassword: confirmPassword,
),
);
_setLoading(false);
_lastMessage = result.message;
notifyListeners();
return result;
}
Future<ServiceResult<void>> forgotPassword(String email) async {
_setLoading(true);
final result = await _authService.resetPassword(email.trim());
_setLoading(false);
_lastMessage = result.message;
notifyListeners();
return result;
}
Future<ServiceResult<void>> logout() async {
_setLoading(true);
final result = await _authService.signOut();
_setLoading(false);
_lastMessage = result.message;
notifyListeners();
return result;
}
void _setLoading(bool value) {
_isLoading = value;
notifyListeners();
}
}