For a contract view that accepts a list of managed buffers I was able to query from erdjs the view like this:
let abi = new SmartContractAbi(abiRegistry, [`MyContract`]);
let contract = new SmartContract({
address: address,
abi: abi,
});
let interaction: Interaction = contract.methods.getTournamentInfoList([
BytesValue.fromUTF8("tournament-01"),
BytesValue.fromUTF8("tournament-02")
]);
let queryResponse = await contract.runQuery(
provider,
interaction.buildQuery()
);
Now I have an view that accepts only a wallet address and I'm trying to call the view like this
let abi = new SmartContractAbi(abiRegistry, [`XLauncherStaking`]);
let contract = new SmartContract({
address: address,
abi: abi,
});
let interaction = contract.methods.getClientReport(
[BytesValue.fromUTF8("erd1mhhnd3ux2duwc9824dhelherdj3gvzn04erdw29l8cyr5z8fpa7quda68z")]
);
let queryResponse = await contract.runQuery(
provider,
interaction.buildQuery()
);
But I get empty response .
If I call from erdpy it works
getClientReport() {
# erdpy wallet bech32 --decode erd1mhhnd3ux2duwc9824dhelherdj3gvzn04erdw29l8cyr5z8fpa7quda68z
erdpy --verbose contract query ${ADDRESS} --function="getClientReport" \
--arguments 0xddef36c7865378ec14eaab6f9fdf236ca2860a6fae46d728bf3e083a08e90f7c \
--proxy=${PROXY}
}
How do I pass an wallet address using javascript SmartContract class?
By using an AddressValue :)