@gear-js/api
Version:
A JavaScript library that provides functionality to connect GEAR Component APIs.
31 lines (29 loc) • 1.37 kB
JavaScript
class GearWaitlist {
_api;
constructor(_api) {
this._api = _api;
}
async read(programId, messageIdOrNumberOfMessages) {
const [messageId, numberOfMessages] = typeof messageIdOrNumberOfMessages === 'string'
? [messageIdOrNumberOfMessages, undefined]
: [undefined, messageIdOrNumberOfMessages || 1000];
if (messageId) {
const waitlist = await this._api.query.gearMessenger.waitlist(programId, messageId);
const typedWaitlist = this._api.createType('Option<(GearCoreMessageStoredStoredDispatch, GearCommonStoragePrimitivesInterval)>', waitlist);
return typedWaitlist.unwrapOr(null);
}
else {
const keyPrefix = this._api.query.gearMessenger.waitlist.keyPrefix(programId);
const keysPaged = await this._api.rpc.state.getKeysPaged(keyPrefix, numberOfMessages, keyPrefix);
if (keysPaged.length === 0) {
return [];
}
const waitlist = (await this._api.rpc.state.queryStorageAt(keysPaged));
return waitlist.map((item) => {
const typedItem = this._api.createType('Option<(GearCoreMessageStoredStoredDispatch, GearCommonStoragePrimitivesInterval)>', item);
return typedItem.unwrapOr(null);
});
}
}
}
export { GearWaitlist };