validateUserToken static method
Implementation
static Future<Result<String>> validateUserToken() 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 results = await Future.wait([
cacheInstance.getValue(cdnConfigInstance.getKeys(StorageKeyKeys.gkAccessTokenKey)!),
cacheInstance.getValue(cdnConfigInstance.getKeys(StorageKeyKeys.checkoutAccessTokenKey)!),
]);
final accessToken = results[0];
final checkoutAccessToken = results[1];
if (accessToken != null) {
gokwik.options.headers[cdnConfigInstance.getHeader(APIHeaderKeys.gkAccessToken)!] = accessToken;
}
if (checkoutAccessToken != null) {
gokwik.options.headers[cdnConfigInstance.getHeader(APIHeaderKeys.checkoutAccessToken)!] =
checkoutAccessToken;
}
final response = (await gokwik.get(cdnConfigInstance.getEndpoint(APIEndpointKeys.validateUserToken)!))
.toBaseResponse<ValidateUserTokenResponseData>(
fromJson: (json) {
// if (json == null) {
// throw Exception('Response data is null');
// }
return ValidateUserTokenResponseData.fromJson(json);
},
);
if (response.isSuccess == false) {
return Failure(response.errorMessage ?? 'Failed to validate token');
}
if (response.data == null) {
return const Failure('No data received from validate token response');
}
try {
final responseData = jsonEncode(response.data);
await cacheInstance.setValue(
cdnConfigInstance.getKeys(StorageKeyKeys.gkVerifiedUserKey)!,
responseData,
);
return Success(responseData);
} catch (e) {
return Failure('Error parsing validate token response: $e');
}
} catch (err) {
throw handleApiError(err);
}
}