92 lines
2.4 KiB
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();
|
|
}
|
|
}
|