35 lines
879 B
Dart
35 lines
879 B
Dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
|
|
import '../../features/auth/domain/entities/user.dart';
|
|
import '../../features/auth/presentation/providers/auth_providers.dart';
|
|
|
|
part 'auth_provider.g.dart';
|
|
|
|
@Riverpod(keepAlive: true)
|
|
class AuthState extends _$AuthState {
|
|
@override
|
|
FutureOr<User?> build() async {
|
|
final repository = ref.read(authRepositoryProvider);
|
|
final isLoggedIn = await repository.isLoggedIn();
|
|
if (isLoggedIn) {
|
|
return repository.getCurrentUser();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
void setUser(User user) {
|
|
state = AsyncData(user);
|
|
}
|
|
|
|
void clearUser() {
|
|
state = const AsyncData(null);
|
|
}
|
|
|
|
Future<void> logout() async {
|
|
final repository = ref.read(authRepositoryProvider);
|
|
await repository.logout();
|
|
state = const AsyncData(null);
|
|
}
|
|
}
|