46 lines
1.1 KiB
Dart
46 lines
1.1 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:firebase_auth/firebase_auth.dart';
|
|
import '../models/user_model.dart';
|
|
import '../services/auth_service.dart';
|
|
|
|
class AuthProvider extends ChangeNotifier {
|
|
final AuthService _authService = AuthService();
|
|
UserModel? _user;
|
|
bool _isLoading = false;
|
|
|
|
UserModel? get user => _user;
|
|
bool get isLoading => _isLoading;
|
|
bool get isAuthenticated => _user != null;
|
|
|
|
AuthProvider() {
|
|
_authService.userStream.listen((User? firebaseUser) async {
|
|
if (firebaseUser != null) {
|
|
_user = await _authService.getUser(firebaseUser.uid);
|
|
} else {
|
|
_user = null;
|
|
}
|
|
notifyListeners();
|
|
});
|
|
}
|
|
|
|
Future<void> login(String email, String password) async {
|
|
_isLoading = true;
|
|
notifyListeners();
|
|
try {
|
|
_user = await _authService.login(email, password);
|
|
} catch (e) {
|
|
_isLoading = false;
|
|
notifyListeners();
|
|
rethrow;
|
|
}
|
|
_isLoading = false;
|
|
notifyListeners();
|
|
}
|
|
|
|
Future<void> logout() async {
|
|
await _authService.logout();
|
|
_user = null;
|
|
notifyListeners();
|
|
}
|
|
}
|