diff --git a/lib/core/di/injection_container.config.dart b/lib/core/di/injection_container.config.dart index 78c31b5..be6144f 100644 --- a/lib/core/di/injection_container.config.dart +++ b/lib/core/di/injection_container.config.dart @@ -14,6 +14,7 @@ import 'package:get_it/get_it.dart' as _i174; import 'package:injectable/injectable.dart' as _i526; import '../../feature/auth/data/datasource/auth_datasource.dart' as _i246; +import '../../feature/auth/data/repository/auth_repository_impl.dart' as _i648; import '../../feature/auth/domain/repository/auth_repository.dart' as _i884; import '../../feature/auth/domain/usecases/login_usecase.dart' as _i241; import '../../feature/auth/presentation/blocs/login_bloc/login_bloc.dart' @@ -62,7 +63,7 @@ extension GetItInjectableX on _i174.GetIt { () => _i246.AuthDatasourceImpl(gh<_i354.RequestHandlerService>()), ); gh.lazySingleton<_i884.AuthRepository>( - () => _i884.AuthRepositoryImpl( + () => _i648.AuthRepositoryImpl( gh<_i354.RequestHandlerService>(), gh<_i246.AuthDatasource>(), ), diff --git a/lib/feature/auth/data/repository/auth_repository_impl.dart b/lib/feature/auth/data/repository/auth_repository_impl.dart new file mode 100644 index 0000000..8d3f1f9 --- /dev/null +++ b/lib/feature/auth/data/repository/auth_repository_impl.dart @@ -0,0 +1,90 @@ +import 'package:dartz/dartz.dart'; +import 'package:food_delivery_client/core/services/request_handler_service.dart'; +import 'package:food_delivery_client/feature/auth/data/datasource/auth_datasource.dart'; +import 'package:food_delivery_client/feature/auth/data/models/response/login_response.dart'; +import 'package:food_delivery_client/food_delivery_client.dart'; + +import '../../domain/repository/auth_repository.dart'; +import '../../domain/usecases/register_usecase.dart'; +import '../../domain/usecases/reset_password_usecase.dart'; +import '../../domain/usecases/verify_otp_code_login_usecase.dart'; +import '../../domain/usecases/verify_phone_login_usecase.dart'; + + +@LazySingleton(as: AuthRepository) +class AuthRepositoryImpl implements AuthRepository { + final RequestHandlerService _requestHandlerService; + final AuthDatasource _authDatasource; + + AuthRepositoryImpl(this._requestHandlerService, this._authDatasource); + + @override + Future> login({ + required String phoneNumber, + required String password, + }) async { + return _requestHandlerService.handleRequestInRepository( + onRequest: () async { + return _authDatasource.login( + phoneNumber: phoneNumber, + password: password, + ); + }, + ); + } + + @override + Future> register({ + required RegisterParams params, + }) async { + return _requestHandlerService.handleRequestInRepository( + onRequest: () async => _authDatasource.register(params: params), + ); + } + + @override + Future> resetPassword({ + required ResetPasswordParams params, + }) async { + return _requestHandlerService.handleRequestInRepository( + onRequest: () => _authDatasource.resetPassword(params: params), + ); + } + + @override + Future> verifyOtpCodeRegister({ + required VerifyOtpCodeParams params, + }) async { + return _requestHandlerService.handleRequestInRepository( + onRequest: () => _authDatasource.verifyOtpCodeRegister(params: params), + ); + } + + @override + Future> verifyOtpCodeResetPassword({ + required VerifyOtpCodeParams params, + }) async { + return _requestHandlerService.handleRequestInRepository( + onRequest: () => + _authDatasource.verifyOtpCodeResetPassword(params: params), + ); + } + + @override + Future> verifyPhoneRegister({ + required VerifyPhoneNumberParams params, + }) async { + return _requestHandlerService.handleRequestInRepository( + onRequest: () => _authDatasource.verifyPhoneRegister(params: params), + ); + } + + @override + Future> verifyPhoneResetPassword({ + required VerifyPhoneNumberParams params, + }) async { + return _requestHandlerService.handleRequestInRepository( + onRequest: () => _authDatasource.verifyPhoneResetPassword(params: params), + ); + } +} \ No newline at end of file diff --git a/lib/feature/auth/domain/repository/auth_repository.dart b/lib/feature/auth/domain/repository/auth_repository.dart index 7ef9f16..02e2903 100644 --- a/lib/feature/auth/domain/repository/auth_repository.dart +++ b/lib/feature/auth/domain/repository/auth_repository.dart @@ -4,32 +4,40 @@ import 'package:food_delivery_client/feature/auth/data/datasource/auth_datasourc import 'package:food_delivery_client/feature/auth/data/models/response/login_response.dart'; import 'package:food_delivery_client/food_delivery_client.dart'; +import '../usecases/register_usecase.dart'; +import '../usecases/reset_password_usecase.dart'; +import '../usecases/verify_otp_code_login_usecase.dart'; +import '../usecases/verify_phone_login_usecase.dart'; + abstract class AuthRepository { Future> login({ required String phoneNumber, required String password, }); + + Future> verifyPhoneResetPassword({ + required VerifyPhoneNumberParams params, + }); + + Future> verifyOtpCodeResetPassword({ + required VerifyOtpCodeParams params, + }); + + Future> resetPassword({ + required ResetPasswordParams params, + }); + + Future> verifyPhoneRegister({ + required VerifyPhoneNumberParams params, + }); + + Future> verifyOtpCodeRegister({ + required VerifyOtpCodeParams params, + }); + + Future> register({ + required RegisterParams params, + }); } -@LazySingleton(as: AuthRepository) -class AuthRepositoryImpl implements AuthRepository { - final RequestHandlerService _requestHandlerService; - final AuthDatasource _authDatasource; - AuthRepositoryImpl(this._requestHandlerService, this._authDatasource); - - @override - Future> login({ - required String phoneNumber, - required String password, - }) async { - return _requestHandlerService.handleRequestInRepository( - onRequest: () async { - return _authDatasource.login( - phoneNumber: phoneNumber, - password: password, - ); - }, - ); - } -}