existing CI tests to confirm we do not break anything
Note: this function is not currently fully tested.
Run this script with this version of ecash-agora and get no errors. (If you run this script not on this version, will get errors).
```
import { ChronikClient } from 'chronik-client';
import { Agora, AgoraOffer, AgoraHistoryResult } from 'ecash-agora';
// Note this must be a server that indexes agora partial offers
const chronik = new ChronikClient(['https://chronik-native3.fabien.cash']);
// Initialize new Agora chronik wrapper at app startup
const agora = new Agora(chronik);
const CHRONIK_MAX_PAGE_SIZE = 200;
export const getAllAgoraHistory = async (agora: Agora, tokenId: string) => {
const agoraHistoryFirstPage: AgoraHistoryResult =
await agora.historicOffers({
type: 'TOKEN_ID',
tokenId,
table: 'HISTORY',
pageSize: CHRONIK_MAX_PAGE_SIZE,
});
const { offers, numPages } = agoraHistoryFirstPage;
// Get historic offers from all pages
// We start with i = 1 because we already have the data from page 0
const historicOffersPromises = [];
for (let i = 1; i < numPages; i += 1) {
historicOffersPromises.push(
new Promise<AgoraOffer[]>((resolve, reject) => {
agora
.historicOffers({
type: 'TOKEN_ID',
tokenId,
table: 'HISTORY',
page: i,
pageSize: CHRONIK_MAX_PAGE_SIZE,
})
.then(
result => {
resolve(result.offers);
},
err => {
reject(err);
},
);
}),
);
}
// Get rest of historicOffers using Promise.all() to execute requests in parallel
const restOfHistoricOffers = await Promise.all(historicOffersPromises);
// Flatten so we have an array of tx objects, and not an array of arrays of tx objects
const flatHistoricOffers = restOfHistoricOffers.flat();
// Combine with the first page
for (const offer of flatHistoricOffers) {
offers.push(offer);
}
console.log(`returning ${offers.length} offers`);
return offers;
};
const getHistoricOffers = async (agora: Agora, tokenId: string) => {
let historicOffers;
try {
historicOffers = await getAllAgoraHistory(agora, tokenId);
console.log(`Fetched ${historicOffers.length} historic offers`);
} catch (err) {
console.log(`Error`, err);
}
};
// XECX
const tokenId =
'c67bf5c2b6d91cfb46a5c1772582eff80d88686887be10aa63b0945479cf4ed4';
getHistoricOffers(agora, tokenId);
```