66 lines
1.4 KiB
Dart
66 lines
1.4 KiB
Dart
import 'package:flutter/foundation.dart';
|
|
import '../models/user.dart';
|
|
import '../services/auth_service.dart';
|
|
|
|
class LoginViewModel extends ChangeNotifier {
|
|
final AuthService _authService;
|
|
|
|
LoginViewModel(this._authService);
|
|
|
|
bool _isLoading = false;
|
|
String? _error;
|
|
User? _currentUser;
|
|
|
|
bool get isLoading => _isLoading;
|
|
String? get error => _error;
|
|
User? get currentUser => _currentUser;
|
|
bool get isLoggedIn => _currentUser != null;
|
|
|
|
Future<void> login(String email, String password) async {
|
|
_isLoading = true;
|
|
_error = null;
|
|
notifyListeners();
|
|
|
|
try {
|
|
_currentUser = await _authService.login(email, password);
|
|
_error = null;
|
|
} catch (e) {
|
|
_error = e.toString();
|
|
_currentUser = null;
|
|
} finally {
|
|
_isLoading = false;
|
|
notifyListeners();
|
|
}
|
|
}
|
|
|
|
Future<void> logout() async {
|
|
_isLoading = true;
|
|
notifyListeners();
|
|
|
|
try {
|
|
await _authService.logout();
|
|
_currentUser = null;
|
|
_error = null;
|
|
} catch (e) {
|
|
_error = e.toString();
|
|
} finally {
|
|
_isLoading = false;
|
|
notifyListeners();
|
|
}
|
|
}
|
|
|
|
Future<void> checkCurrentUser() async {
|
|
_isLoading = true;
|
|
notifyListeners();
|
|
|
|
try {
|
|
_currentUser = await _authService.getCurrentUser();
|
|
} catch (e) {
|
|
_error = e.toString();
|
|
} finally {
|
|
_isLoading = false;
|
|
notifyListeners();
|
|
}
|
|
}
|
|
}
|