Closed rafaelcr closed 3 days ago
Confirmed in v8.0.0
Some context:
I came across this issue while coding a script that updates a local JSON file holding all the transactions of our Pool Operator. The script checks how many transactions I already saved in a JSON and how many are left to fetch. But after I downloaded 30 transactions, I was missing the latest 3 transactions I broadcasted. Upon debugging, I noticed that the total
value changes from 30 to 0 if I add any offset parameter to the request.
It would be great to always show the total
amount of transactions so developers can use a while loop to fetch up until total
has been reached.
let lastTxs = [];
let total = 0;
let limitLastTxs = 10;
let totalSavedTxs = jsonTxData.transactions.length;
let offsetLastTxs = jsonTxData.transactions.length;
while (total <= totalSavedTxs) {
try {
await fetch(
'https://api.hiro.so/extended/v2/addresses/' +
poolAddress + '/transactions?limit=' + limitLastTxs +
'&offset=' + offsetLastTxs, {
method: 'get',
headers: { 'Content-Type': 'application/json' }
}
)
.then((response) => response.json())
.then((data) => {
//console.log('data', data);
// Concatenate results with the previous fetch
lastTxs = lastTxs.concat(data.results);
// Update total
total = data.total;
// Update offset
offsetLastTxs = (lastTxs.length + totalSavedTxs);
});
// Break if it is still totalSavedTxs === total
if (total === totalSavedTxs || total === 0) break;
} catch (e) {
console.error('Could not fetch transactions from HIRO API.');
throw new Error(e);
}
}
Example: https://api.hiro.so/extended/v2/addresses/SP1JX8274K2R0MMP1VCX56C5DCERPP6EH5XHS68MR/transactions?limit=30&offset=30
When
offset=
is removed: