초기 커밋
This commit is contained in:
78
lib/features/auth/presentation/providers/auth_providers.dart
Normal file
78
lib/features/auth/presentation/providers/auth_providers.dart
Normal file
@@ -0,0 +1,78 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
|
||||
import '../../../../core/logging/app_logger.dart';
|
||||
import '../../../../core/network/dio_client.dart';
|
||||
import '../../../../core/storage/secure_storage.dart';
|
||||
import '../../data/datasources/auth_remote_source.dart';
|
||||
import '../../data/repositories/auth_repository_impl.dart';
|
||||
import '../../domain/entities/user.dart';
|
||||
import '../../domain/repositories/auth_repository.dart';
|
||||
|
||||
part 'auth_providers.g.dart';
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
AuthRemoteSource authRemoteSource(Ref ref) {
|
||||
final dio = ref.read(dioProvider);
|
||||
return AuthRemoteSource(dio);
|
||||
}
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
AuthRepository authRepository(Ref ref) {
|
||||
return AuthRepositoryImpl(
|
||||
remoteSource: ref.read(authRemoteSourceProvider),
|
||||
secureStorage: ref.read(secureStorageProvider),
|
||||
talker: ref.read(appLoggerProvider),
|
||||
);
|
||||
}
|
||||
|
||||
@riverpod
|
||||
class LoginNotifier extends _$LoginNotifier {
|
||||
@override
|
||||
FutureOr<void> build() {}
|
||||
|
||||
Future<User?> login({
|
||||
required String email,
|
||||
required String password,
|
||||
}) async {
|
||||
state = const AsyncLoading();
|
||||
final result = await AsyncValue.guard(() async {
|
||||
final repository = ref.read(authRepositoryProvider);
|
||||
return repository.login(email: email, password: password);
|
||||
});
|
||||
|
||||
state = result.hasError
|
||||
? AsyncError(result.error!, result.stackTrace!)
|
||||
: const AsyncData(null);
|
||||
|
||||
return result.valueOrNull;
|
||||
}
|
||||
}
|
||||
|
||||
@riverpod
|
||||
class RegisterNotifier extends _$RegisterNotifier {
|
||||
@override
|
||||
FutureOr<void> build() {}
|
||||
|
||||
Future<User?> register({
|
||||
required String email,
|
||||
required String password,
|
||||
required String name,
|
||||
}) async {
|
||||
state = const AsyncLoading();
|
||||
final result = await AsyncValue.guard(() async {
|
||||
final repository = ref.read(authRepositoryProvider);
|
||||
return repository.register(
|
||||
email: email,
|
||||
password: password,
|
||||
name: name,
|
||||
);
|
||||
});
|
||||
|
||||
state = result.hasError
|
||||
? AsyncError(result.error!, result.stackTrace!)
|
||||
: const AsyncData(null);
|
||||
|
||||
return result.valueOrNull;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user