createUserApi static method
Implementation
static Future<Result<Map<String, dynamic>?>> createUserApi({
required String email,
required String name,
String? dob,
String? gender,
}) async {
final result = await checkKwikpassHealth();
if(result.isSuccess) {
final healthData = result.getDataOrThrow();
if(healthData?.isKwikpassHealthy == false){
throw Exception('Kwikpass is unhealthy');
}
}
try {
final gokwik = DioClient().getClient();
final response = (await gokwik.post(
cdnConfigInstance.getEndpoint(APIEndpointKeys.customCreateUser)!,
data: {
'email': email,
'name': name,
if (dob != null) 'dob': dob,
if (gender != null) 'gender': gender,
},
))
.toBaseResponse(
fromJson: (json) => json,
);
if (response.isSuccess == false) {
return Failure(response.errorMessage ?? 'Failed to create user');
}
final data = response.data;
final merchantResponse = data?['merchantResponse']?['accountCreate'];
final errors = merchantResponse?['accountErrors'];
if (merchantResponse?['user'] == null &&
errors != null &&
errors.isNotEmpty) {
throw errors[0];
}
final userRes = {
'email': email,
'username': name,
'dob': dob,
'gender': gender,
'isSuccess': true,
'emailRequired': true,
'merchantResponse': {
'csrfToken': merchantResponse?['user']?['csrfToken'],
'id': merchantResponse?['user']?['id'],
'token': merchantResponse?['user']?['token'],
'refreshToken': merchantResponse?['user']?['refreshToken'],
'email': email,
},
};
await cacheInstance.setValue(
cdnConfigInstance.getKeys(StorageKeyKeys.gkVerifiedUserKey)!,
jsonEncode(userRes),
);
return Success(userRes);
} catch (err) {
throw handleApiError(err);
}
}