@gear-js/api
Version:
A JavaScript library that provides functionality to connect GEAR Component APIs.
44 lines (40 loc) • 1.76 kB
JavaScript
;
require('@polkadot/util');
var claim_errors = require('../errors/claim.errors.js');
var Transaction = require('./Transaction.js');
class GearMailbox extends Transaction.GearTransaction {
async read(accountId, messageIdOrNumberOfMessages) {
const [messageId, numberOfMessages] = typeof messageIdOrNumberOfMessages === 'string'
? [messageIdOrNumberOfMessages, undefined]
: [undefined, messageIdOrNumberOfMessages || 1000];
if (messageId) {
const mailbox = await this._api.query.gearMessenger.mailbox(accountId, messageId);
const typedMailbox = this._api.createType('Option<(UserStoredMessage, GearCommonStoragePrimitivesInterval)>', mailbox);
return typedMailbox.unwrapOr(null);
}
const keyPrefixes = this._api.query.gearMessenger.mailbox.keyPrefix(accountId);
const keysPaged = await this._api.rpc.state.getKeysPaged(keyPrefixes, numberOfMessages, keyPrefixes);
if (keysPaged.length === 0) {
return [];
}
const mailbox = (await this._api.rpc.state.queryStorageAt(keysPaged));
return mailbox.map((item) => {
const typedItem = this._api.createType('Option<(UserStoredMessage, GearCommonStoragePrimitivesInterval)>', item);
return typedItem.unwrapOr(null);
});
}
/**
* ## Create `claimValue` extrinsic
* @param messageId MessageId with value to be claimed
*/
claimValue(messageId) {
try {
this.extrinsic = this._api.tx.gear.claimValue(messageId);
return this.extrinsic;
}
catch (_) {
throw new claim_errors.ClaimValueError();
}
}
}
exports.GearMailbox = GearMailbox;