signupWithCredentials method
Future<Either<Failure, AuthenticationData?> >
signupWithCredentials(
- AuthSignUpPayload payload
override
Implementation
@override
Future<Either<Failure, AuthenticationData?>> signupWithCredentials(
AuthSignUpPayload payload) async {
AuthDeviceInfo? authDeviceInfo;
return wrapAndHandleHttpBaseRequest(
() async {
if (config.provideDeviceInfo) {
payload = payload.copyWith(
deviceInfo: await AuthDeviceInfoModel.create(),
);
}
final url = config.signupCredentialsAPIendpoint();
final data = payload.toMap();
// let's check if payload data already has device info
// if not we can add it if applies
if (data["deviceInfo"] == null && config.provideDeviceInfo) {
authDeviceInfo = await AuthDeviceInfoModel.create();
data["deviceInfo"] = authDeviceInfo!.toMap();
} else if (config.provideDeviceInfo) {
authDeviceInfo = payload.deviceInfo;
}
final requestBody = jsonEncode(data);
logger.v("Signup with credentials at API: $url");
// logger.v("Request body is $requestBody");
final request = Request(
"POST",
url,
)..body = requestBody;
return request;
},
onResponse: (response, left, right) async {
AuthenticationData? authData;
if (config.customSignupCredentialsResponseParser != null) {
authData = await config
.customSignupCredentialsResponseParser!(response.body);
} else {
authData = defaultAuthenticationDataParser(response.body)!;
}
/// check if we have an authData extracted from response
/// so we can store the session
if (authData != null && config.authenticateOnSignup) {
await storeAuthDataSession(authData.copyWith(
deviceInfo: authDeviceInfo,
));
}
logger.v("Login successfully");
return right(
authData,
);
},
);
}