taafee-mobile/lib/features/auth/data_layer/source/auth_service.dart
2023-10-17 17:22:55 +03:00

142 lines
4.0 KiB
Dart

import 'package:taafee_mobile/core/apis/apis.dart';
import 'package:taafee_mobile/features/auth/data_layer/model/login.dart';
import 'package:taafee_mobile/features/auth/data_layer/model/login_response.dart';
import 'package:taafee_mobile/features/auth/data_layer/model/register.dart';
import 'package:taafee_mobile/features/auth/data_layer/model/reset_token.dart';
import 'package:taafee_mobile/features/auth/data_layer/model/verification_code.dart';
import '../../../../core/network/http.dart';
import '../model/user.dart';
class AuthService {
Future<void> register(RegisterModel registerModel) async {
Request request = Request(
EndPoint.register,
RequestMethod.post,
body: registerModel.toJson(),
);
// no need to use variable (response)
await request.sendRequest();
}
Future<void> verify(VerificationCodeModel verificationCodeModel) async {
Request request = Request(
EndPoint.verificationCode,
RequestMethod.post,
body: verificationCodeModel.toJson(),
);
// no need to use variable (response)
await request.sendRequest();
}
Future<LoginResponseModel> login(LoginModel loginModel) async {
Request request = Request(
EndPoint.login,
RequestMethod.post,
body: loginModel.toJson(),
);
Map<String, dynamic> response = await request.sendRequest();
return LoginResponseModel.fromJson(response["data"]);
}
Future<void> logout() async {
Request request = Request(
EndPoint.logout,
RequestMethod.get,
authorized: true,
);
// no need to use variable (response)
await request.sendRequest();
}
Future<void> resendCode(String email) async {
Request request = Request(EndPoint.resendCode, RequestMethod.post,
body: {"email": email});
// no need to use variable (response)
await request.sendRequest();
}
Future<void> forgotPassword(String email) async {
Request request = Request(
EndPoint.forgotPassword,
RequestMethod.post,
body: {
"email": email,
},
);
// no need to use variable (response)
await request.sendRequest();
}
Future<ResetToken> verifyForgotPassword(String email, String code) async {
Request request = Request(
EndPoint.verifyForgotPassword,
RequestMethod.post,
body: {
"email": email,
"reset_code": code,
},
);
Map<String, dynamic> response = await request.sendRequest();
return ResetToken.fromJson(response);
}
Future<void> changePassword(String resetToken, String newPassword) async {
Request request = Request(
EndPoint.changePassword,
RequestMethod.post,
body: {
"reset_token": resetToken,
"new_password": newPassword,
},
);
// no need to use variable (response)
await request.sendRequest();
}
Future<void> deleteAccount(String password) async {
Request request = Request(EndPoint.deleteAccount, RequestMethod.delete,
authorized: true, body: {"password": password});
// no need to use variable (response)
await request.sendRequest();
}
///----------------show user profile-------------///
Future<User> showUser({void Function(Object)? onConnectionError}) async {
Request request = Request(EndPoint.editAccount, RequestMethod.get,
authorized: true,
cacheable: true,
headers: {
'Accept': 'application/json',
});
Map<String, dynamic> response =
await request.sendRequest(onConnectionError: onConnectionError);
return User.fromJson(response['data']);
}
///---------------guest---------------------///
Future<String> guest() async {
Request request = Request(EndPoint.guest, RequestMethod.post);
Map<String, dynamic> response = await request.sendRequest();
return response['token'];
}
/// ------------- terminate other sessions --------///
Future<void> terminateOtherSessions() async {
Request request =
Request(EndPoint.terminate, RequestMethod.delete, authorized: true);
await request.sendRequest();
}
}