feat:auth datasource done
This commit is contained in:
@@ -2,4 +2,10 @@ abstract class ApiConst {
|
||||
static const String baseUrl = "https://superapp.felixits.uz/api/v1";
|
||||
|
||||
static const String login = "/auth/login";
|
||||
static const String register = "/auth/register/create_user";
|
||||
static const String resetPassword = "/auth/reset_password";
|
||||
static const String forgotPassword = "/auth/forgot_password";
|
||||
static const String sendCode = "/auth/send_code";
|
||||
static const String verifyCode = "/auth/register/verify_code";
|
||||
static const String verifyPhone = "/auth/register/verify_phone";
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ abstract class AppLocaleKeys {
|
||||
static const String fontLight = "fontLight";
|
||||
|
||||
static const String imageUrl =
|
||||
"https://xsznseejebbai1lj.public.blob.vercel-storage.com/homepage/hero/hero-1.webp";
|
||||
"https://www.peanutbutterandfitness.com/wp-content/uploads/2023/07/Healthy-Weekly-Meal-Plan-Recipes-7.9.23-1.jpg";
|
||||
|
||||
static const String foodImageUrl =
|
||||
"https://www.precisionorthomd.com/wp-content/uploads/2023/10/percision-blog-header-junk-food-102323.jpg";
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
import 'package:food_delivery_client/core/services/request_handler_service.dart';
|
||||
import 'package:food_delivery_client/feature/auth/data/models/response/login_response.dart';
|
||||
import 'package:food_delivery_client/feature/auth/domain/usecases/register_usecase.dart';
|
||||
import 'package:food_delivery_client/feature/auth/domain/usecases/reset_password_usecase.dart';
|
||||
import 'package:food_delivery_client/feature/auth/domain/usecases/verify_otp_code_login_usecase.dart';
|
||||
import 'package:food_delivery_client/feature/auth/domain/usecases/verify_phone_login_usecase.dart';
|
||||
import 'package:food_delivery_client/food_delivery_client.dart';
|
||||
|
||||
abstract class AuthDatasource {
|
||||
@@ -7,6 +11,26 @@ abstract class AuthDatasource {
|
||||
required String phoneNumber,
|
||||
required String password,
|
||||
});
|
||||
|
||||
Future<SuccessModel> verifyPhoneResetPassword({
|
||||
required VerifyPhoneNumberParams params,
|
||||
});
|
||||
|
||||
Future<SuccessModel> verifyOtpCodeResetPassword({
|
||||
required VerifyOtpCodeParams params,
|
||||
});
|
||||
|
||||
Future<SuccessModel> resetPassword({required ResetPasswordParams params});
|
||||
|
||||
Future<SuccessModel> verifyPhoneRegister({
|
||||
required VerifyPhoneNumberParams params,
|
||||
});
|
||||
|
||||
Future<SuccessModel> verifyOtpCodeRegister({
|
||||
required VerifyOtpCodeParams params,
|
||||
});
|
||||
|
||||
Future<SuccessModel> register({required RegisterParams params});
|
||||
}
|
||||
|
||||
@LazySingleton(as: AuthDatasource)
|
||||
@@ -27,4 +51,88 @@ class AuthDatasourceImpl implements AuthDatasource {
|
||||
fromJson: (response) async => LoginResponseModel.fromJson(response.data),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<SuccessModel> register({required RegisterParams params}) async {
|
||||
return _requestHandlerService.handleRequest(
|
||||
path: ApiConst.register,
|
||||
method: RequestMethodEnum.post,
|
||||
|
||||
data: {
|
||||
"firstName": params.firstName,
|
||||
"lastName": params.lastName,
|
||||
"password": params.password,
|
||||
"phoneNumber": params.phoneNumber,
|
||||
},
|
||||
|
||||
fromJson: (response) async {
|
||||
return SuccessModel.fromJson(response.data);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<SuccessModel> resetPassword({
|
||||
required ResetPasswordParams params,
|
||||
}) async {
|
||||
return _requestHandlerService.handleRequest(
|
||||
path: ApiConst.resetPassword,
|
||||
method: RequestMethodEnum.post,
|
||||
data: {
|
||||
"newPassword": params.newPassword,
|
||||
"phoneNumber": params.phoneNumber,
|
||||
},
|
||||
|
||||
fromJson: (response) async => SuccessModel.fromJson(response.data),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<SuccessModel> verifyOtpCodeRegister({
|
||||
required VerifyOtpCodeParams params,
|
||||
}) async {
|
||||
return _requestHandlerService.handleRequest(
|
||||
path: ApiConst.verifyCode,
|
||||
method: RequestMethodEnum.post,
|
||||
data: {"code": params.otpCode, "phoneNumber": params.phoneNumber},
|
||||
fromJson: (response) async => SuccessModel.fromJson(response.data),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<SuccessModel> verifyOtpCodeResetPassword({
|
||||
required VerifyOtpCodeParams params,
|
||||
}) async {
|
||||
return _requestHandlerService.handleRequest(
|
||||
path: ApiConst.forgotPassword,
|
||||
method: RequestMethodEnum.post,
|
||||
data: {"code": params.otpCode, "phoneNumber": params.phoneNumber},
|
||||
fromJson: (response) async => SuccessModel.fromJson(response.data),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<SuccessModel> verifyPhoneRegister({
|
||||
required VerifyPhoneNumberParams params,
|
||||
}) async {
|
||||
return _requestHandlerService.handleRequest(
|
||||
path: ApiConst.verifyPhone,
|
||||
method: RequestMethodEnum.post,
|
||||
|
||||
data: {"phoneNumber": params.phoneNumber},
|
||||
fromJson: (response) async => SuccessModel.fromJson(response.data),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<SuccessModel> verifyPhoneResetPassword({
|
||||
required VerifyPhoneNumberParams params,
|
||||
}) async {
|
||||
return _requestHandlerService.handleRequest(
|
||||
path: ApiConst.sendCode,
|
||||
method: RequestMethodEnum.post,
|
||||
data: {"phoneNumber": params.phoneNumber},
|
||||
fromJson: (response) async => SuccessModel.fromJson(response.data),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
13
lib/feature/auth/domain/usecases/register_usecase.dart
Normal file
13
lib/feature/auth/domain/usecases/register_usecase.dart
Normal file
@@ -0,0 +1,13 @@
|
||||
class RegisterParams {
|
||||
final String firstName;
|
||||
final String lastName;
|
||||
final String phoneNumber;
|
||||
final String password;
|
||||
|
||||
RegisterParams({
|
||||
required this.firstName,
|
||||
required this.lastName,
|
||||
required this.phoneNumber,
|
||||
required this.password,
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
class ResetPasswordParams {
|
||||
final String newPassword;
|
||||
final String phoneNumber;
|
||||
|
||||
ResetPasswordParams({required this.newPassword, required this.phoneNumber});
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
class VerifyOtpCodeParams {
|
||||
final String otpCode;
|
||||
final String phoneNumber;
|
||||
|
||||
VerifyOtpCodeParams({required this.otpCode, required this.phoneNumber});
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
class VerifyPhoneNumberParams {
|
||||
final String phoneNumber;
|
||||
|
||||
VerifyPhoneNumberParams({required this.phoneNumber});
|
||||
}
|
||||
@@ -33,7 +33,12 @@ class _WLoginBodyState extends State<WLoginBody> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocBuilder<LoginBloc, LoginState>(
|
||||
return BlocConsumer<LoginBloc, LoginState>(
|
||||
listener: (context, state) {
|
||||
if (state.status.isLoaded()) {
|
||||
context.go(Routes.main);
|
||||
}
|
||||
},
|
||||
builder: (context, state) {
|
||||
return Form(
|
||||
key: _formKey,
|
||||
@@ -105,7 +110,7 @@ class _WLoginBodyState extends State<WLoginBody> {
|
||||
alignment: AlignmentGeometry.centerRight,
|
||||
child: TextButton(
|
||||
onPressed: () {
|
||||
context.push(Routes.verifyPhoneNumber, extra: false);
|
||||
// context.push(Routes.verifyPhoneNumber, extra: false);
|
||||
},
|
||||
child: Text(
|
||||
context.loc.forgot_password,
|
||||
@@ -124,15 +129,16 @@ class _WLoginBodyState extends State<WLoginBody> {
|
||||
).paddingOnly(left: 10),
|
||||
onPressed: () {
|
||||
if (_formKey.currentState?.validate() ?? false) {
|
||||
context.read<LoginBloc>().add(
|
||||
LoginEvent.login(
|
||||
LoginParams(
|
||||
phoneNumber:
|
||||
"+998${_phoneController.text.trim().replaceAll(" ", "")}",
|
||||
password: _passwordController.text.trim(),
|
||||
),
|
||||
),
|
||||
);
|
||||
context.go(Routes.main);
|
||||
// context.read<LoginBloc>().add(
|
||||
// LoginEvent.login(
|
||||
// LoginParams(
|
||||
// phoneNumber:
|
||||
// "+998${_phoneController.text.trim().replaceAll(" ", "")}",
|
||||
// password: _passwordController.text.trim(),
|
||||
// ),
|
||||
// ),
|
||||
// );
|
||||
}
|
||||
},
|
||||
borderRadius: 15,
|
||||
@@ -148,10 +154,7 @@ class _WLoginBodyState extends State<WLoginBody> {
|
||||
),
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
context.push(
|
||||
Routes.verifyPhoneNumber,
|
||||
extra: true,
|
||||
);
|
||||
// context.push(Routes.verifyPhoneNumber, extra: true);
|
||||
},
|
||||
child: Text(
|
||||
context.loc.sign_up,
|
||||
|
||||
Reference in New Issue
Block a user