checkAllowance method
Future
checkAllowance({
- required String senderAddress,
- required String receiverAddress,
- required String contractAddress,
- required String caip2Chain,
override
Implementation
@override
Future<dynamic> checkAllowance({
required String senderAddress,
required String receiverAddress,
required String contractAddress,
required String caip2Chain,
}) async {
// Keccak-256 of "allowance(address,address)"
final functionSelector = 'dd62ed3e';
final ownerPadded = senderAddress.replaceFirst('0x', '').padLeft(64, '0');
final spenderPadded =
receiverAddress.replaceFirst('0x', '').padLeft(64, '0');
final data = '0x$functionSelector$ownerPadded$spenderPadded';
//
final uri = Uri.parse(_baseUrl);
final queryParams = {..._requiredParams, 'chainId': caip2Chain};
final url = uri.replace(queryParameters: queryParams);
final body = jsonEncode({
'jsonrpc': '2.0',
'id': 1,
'method': 'eth_call',
'params': [
{'to': contractAddress, 'data': data},
'latest'
]
});
final response = await http.post(
url,
headers: _requiredHeaders,
body: body,
);
_core.logger.i(
'[$runtimeType] checkAllowance $url, $body => ${response.body}',
);
if (response.statusCode == 200 && response.body.isNotEmpty) {
try {
final namespace = NamespaceUtils.getNamespaceFromChain(caip2Chain);
return _parseBalanceResult(namespace, response.body);
} on JsonRpcError catch (e) {
_core.logger.e('[$runtimeType] checkAllowance, parse error => $e');
throw 'Failed checking allowance';
} catch (e) {
_core.logger.e('[$runtimeType] checkAllowance, parse error => $e');
throw 'Failed checking allowance';
}
}
try {
final reason = _parseResponseError(response.body);
throw Exception(reason);
} catch (e) {
_core.logger.e('[$runtimeType] checkAllowance, decode error => $e');
rethrow;
}
}